28namespace RobotRaconteur
30class ROBOTRACONTEUR_CORE_API AsyncMessageReader :
private boost::noncopyable
36 ReadReturn_continue_nobuffers,
37 ReadReturn_continue_buffers
40 virtual void Reset() = 0;
41 virtual return_type Read(
const const_buffers& other_bufs,
size_t& other_bufs_used,
size_t continue_read_len,
42 mutable_buffers& next_continue_read_bufs) = 0;
43 virtual return_type Read4(
const const_buffers& other_bufs,
size_t& other_bufs_used,
size_t continue_read_len,
44 mutable_buffers& next_continue_read_bufs) = 0;
46 virtual bool MessageReady() = 0;
47 virtual RR_INTRUSIVE_PTR<Message> GetNextMessage() = 0;
49 static RR_SHARED_PTR<AsyncMessageReader> CreateInstance();
51 virtual ~AsyncMessageReader();
54class ROBOTRACONTEUR_CORE_API AsyncMessageWriter :
private boost::noncopyable
64 virtual void Reset() = 0;
65 virtual void BeginWrite(
const RR_INTRUSIVE_PTR<Message>& m, uint16_t version) = 0;
67 virtual return_type Write(
size_t write_quota, mutable_buffers& work_bufs,
size_t& work_bufs_used,
68 const_buffers& write_bufs) = 0;
69 virtual return_type Write4(
size_t write_quota, mutable_buffers& work_bufs,
size_t& work_bufs_used,
70 const_buffers& write_bufs) = 0;
72 virtual size_t WriteRemaining() = 0;
74 static RR_SHARED_PTR<AsyncMessageWriter> CreateInstance();
76 virtual ~AsyncMessageWriter();