@@ -38,6 +38,33 @@ class BCP_API message
38
38
// / An identifier for message routing.
39
39
typedef byte_array<address_size> address;
40
40
41
+ // / Add an unsigned integer message part to the outgoing message.
42
+ template <typename Unsigned>
43
+ void enqueue_little_endian (Unsigned value)
44
+ {
45
+ queue_.emplace (to_chunk (to_little_endian<Unsigned>(value)));
46
+ }
47
+
48
+ // / Remove an unsigned from the queue top, false if empty queue or invalid.
49
+ template <typename Unsigned>
50
+ bool dequeue (Unsigned& value)
51
+ {
52
+ if (queue_.empty ())
53
+ return false ;
54
+
55
+ const auto & front = queue_.front ();
56
+
57
+ if (front.size () == sizeof (Unsigned))
58
+ {
59
+ value = from_little_endian_unsafe<Unsigned>(front.begin ());
60
+ queue_.pop ();
61
+ return true ;
62
+ }
63
+
64
+ queue_.pop ();
65
+ return false ;
66
+ }
67
+
41
68
// / Add an empty message part to the outgoing message.
42
69
void enqueue ();
43
70
@@ -53,20 +80,12 @@ class BCP_API message
53
80
// / Move an identifier message part to the outgoing message.
54
81
void enqueue (const address& value);
55
82
56
- // / Add an unsigned integer message part to the outgoing message.
57
- template <typename Unsigned>
58
- void enqueue_little_endian (Unsigned value)
59
- {
60
- queue_.emplace (to_chunk (to_little_endian<Unsigned>(value)));
61
- }
62
-
63
83
// / Remove a message part from the top of the queue, empty if empty queue.
64
84
data_chunk dequeue_data ();
65
85
std::string dequeue_text ();
66
86
67
87
// / Remove a part from the queue top, false if empty queue or invalid.
68
88
bool dequeue ();
69
- bool dequeue (uint32_t & value);
70
89
bool dequeue (data_chunk& value);
71
90
bool dequeue (std::string& value);
72
91
bool dequeue (hash_digest& value);
0 commit comments