Robot Raconteur Core C++ Library
Loading...
Searching...
No Matches
AsyncMessageIO.h
Go to the documentation of this file.
1
23
25
26#pragma once
27
28namespace RobotRaconteur
29{
30class ROBOTRACONTEUR_CORE_API AsyncMessageReader : private boost::noncopyable
31{
32 public:
33 enum return_type
34 {
35 ReadReturn_done = 0,
36 ReadReturn_continue_nobuffers,
37 ReadReturn_continue_buffers
38 };
39
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;
45
46 virtual bool MessageReady() = 0;
47 virtual RR_INTRUSIVE_PTR<Message> GetNextMessage() = 0;
48
49 static RR_SHARED_PTR<AsyncMessageReader> CreateInstance();
50
51 virtual ~AsyncMessageReader();
52};
53
54class ROBOTRACONTEUR_CORE_API AsyncMessageWriter : private boost::noncopyable
55{
56 public:
57 enum return_type
58 {
59 WriteReturn_done = 0,
60 WriteReturn_continue,
61 WriteReturn_last,
62 };
63
64 virtual void Reset() = 0;
65 virtual void BeginWrite(const RR_INTRUSIVE_PTR<Message>& m, uint16_t version) = 0;
66
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;
71
72 virtual size_t WriteRemaining() = 0;
73
74 static RR_SHARED_PTR<AsyncMessageWriter> CreateInstance();
75
76 virtual ~AsyncMessageWriter();
77};
78
79} // namespace RobotRaconteur