asio::async_read and buffer handling

Hello I m a new Boost user, (and a little less but still new C++ developper) and I d like to find some advices about how to manage network communications. I m writing a daemon and I use boost::asio::async_read_until() to fill a boost::asio::streambuf buffer. Here's the corresponding handler : void Session::handleRecv(const boost::system::error_code& error, size_t size) { if(error.value() == 0 && size > 0) { size -= separator.size(); istream command_stream(&buffer_); char * command_chr = new char[size]; command_stream.read(command_chr, size); string command = command_chr; cout << "COMMAND " << command << endl; buffer_.consume(separator.size()); //doSomethingWithTheCommand(command); this->start(); } } I have some questions regarding this code. If I don't consume the full buffer_ , as soon as the this->start() is called, the handlerRecv() is called again. Is this a normal behaviour ? Is there a better way to extract the command from the buffer_ variable ? Finally how could I use an iterator of buffer_ without using an external class (like it's done in http://asio.sourceforge.net/boost_asio_1_0_0/libs/asio/doc/html/boost_asio/e... , example I didn't fully understood) Thanks in advance.
participants (1)
-
Axel