Skip to content

Commit d5a0439

Browse files
Allow convenient message dequeue for unsigned integral types
1 parent c608999 commit d5a0439

File tree

2 files changed

+27
-26
lines changed

2 files changed

+27
-26
lines changed

include/bitcoin/protocol/zmq/message.hpp

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,33 @@ class BCP_API message
3838
/// An identifier for message routing.
3939
typedef byte_array<address_size> address;
4040

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+
4168
/// Add an empty message part to the outgoing message.
4269
void enqueue();
4370

@@ -53,20 +80,12 @@ class BCP_API message
5380
/// Move an identifier message part to the outgoing message.
5481
void enqueue(const address& value);
5582

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-
6383
/// Remove a message part from the top of the queue, empty if empty queue.
6484
data_chunk dequeue_data();
6585
std::string dequeue_text();
6686

6787
/// Remove a part from the queue top, false if empty queue or invalid.
6888
bool dequeue();
69-
bool dequeue(uint32_t& value);
7089
bool dequeue(data_chunk& value);
7190
bool dequeue(std::string& value);
7291
bool dequeue(hash_digest& value);

src/zmq/message.cpp

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -61,24 +61,6 @@ bool message::dequeue()
6161
return true;
6262
}
6363

64-
bool message::dequeue(uint32_t& value)
65-
{
66-
if (queue_.empty())
67-
return false;
68-
69-
const auto& front = queue_.front();
70-
71-
if (front.size() == sizeof(uint32_t))
72-
{
73-
value = from_little_endian_unsafe<uint32_t>(front.begin());
74-
queue_.pop();
75-
return true;
76-
}
77-
78-
queue_.pop();
79-
return false;
80-
}
81-
8264
bool message::dequeue(data_chunk& value)
8365
{
8466
if (queue_.empty())

0 commit comments

Comments
 (0)