c++ - Is this real scenario using boost::asio for full duplex communication? -


i'm using boost::asio library creating full duplex server. wondering whether situation possible happen.

  1. came request stored in own buffer.
  2. i filled response data in own buffer.
  3. i'm starting send response asynchronously.
  4. came new request.
  5. i filled response data in same buffer in had filled previous time.
  6. the buffer of previous write operation not yet finished corrupted new response data.

the question whether need separate buffer every write operation or in point 3 buffer copied in kind of internal buffer , can safely fill new response in same buffer?

boost::asio able full-duplex operation, should manage buffers carefully.

the general rules is:

  1. only 1 read operation on given socket can active @ time.
  2. same write operations

so can 1 write , 1 read operation simultaneously.

situation described should work in single-threaded environment since process cannot add buffer , use write simultaneously. but, there trick however: after append write buffer cannot know current async_write done or not. need start new async_write or not? moment needs verified.

p.s. , no, asio never copies buffers internally.


Comments