Skip to content

Commit 649a83c

Browse files
committed
refactor: rename Transport class receive functions
Now that the Transport class deals with both the sending and receiving side of things, make the receive side have function names that clearly indicate they're about receiving. * Transport::Read() -> Transport::ReceivedBytes() * Transport::Complete() -> Transport::ReceivedMessageComplete() * Transport::GetMessage() -> Transport::GetReceivedMessage() * Transport::SetVersion() -> Transport::SetReceiveVersion() Further, also update the comments on these functions to (among others) remove the "deserialization" terminology. That term is better reserved for just the serialization/deserialization between objects and bytes (see serialize.h), and not the conversion from/to wire bytes as performed by the Transport.
1 parent 27f9ba2 commit 649a83c

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed

src/net.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -681,16 +681,16 @@ bool CNode::ReceiveMsgBytes(Span<const uint8_t> msg_bytes, bool& complete)
681681
nRecvBytes += msg_bytes.size();
682682
while (msg_bytes.size() > 0) {
683683
// absorb network data
684-
int handled = m_transport->Read(msg_bytes);
684+
int handled = m_transport->ReceivedBytes(msg_bytes);
685685
if (handled < 0) {
686686
// Serious header problem, disconnect from the peer.
687687
return false;
688688
}
689689

690-
if (m_transport->Complete()) {
690+
if (m_transport->ReceivedMessageComplete()) {
691691
// decompose a transport agnostic CNetMessage from the deserializer
692692
bool reject_message{false};
693-
CNetMessage msg = m_transport->GetMessage(time, reject_message);
693+
CNetMessage msg = m_transport->GetReceivedMessage(time, reject_message);
694694
if (reject_message) {
695695
// Message deserialization failed. Drop the message but don't disconnect the peer.
696696
// store the size of the corrupt message
@@ -785,7 +785,7 @@ const uint256& V1Transport::GetMessageHash() const
785785
return data_hash;
786786
}
787787

788-
CNetMessage V1Transport::GetMessage(const std::chrono::microseconds time, bool& reject_message)
788+
CNetMessage V1Transport::GetReceivedMessage(const std::chrono::microseconds time, bool& reject_message)
789789
{
790790
AssertLockNotHeld(m_recv_mutex);
791791
// Initialize out parameter

src/net.h

+13-12
Original file line numberDiff line numberDiff line change
@@ -261,14 +261,14 @@ class Transport {
261261
// 1. Receiver side functions, for decoding bytes received on the wire into transport protocol
262262
// agnostic CNetMessage (message type & payload) objects.
263263

264-
// returns true if the current deserialization is complete
265-
virtual bool Complete() const = 0;
266-
// set the deserialization context version
267-
virtual void SetVersion(int version) = 0;
268-
/** read and deserialize data, advances msg_bytes data pointer */
269-
virtual int Read(Span<const uint8_t>& msg_bytes) = 0;
270-
// decomposes a message from the context
271-
virtual CNetMessage GetMessage(std::chrono::microseconds time, bool& reject_message) = 0;
264+
/** Returns true if the current message is complete (so GetReceivedMessage can be called). */
265+
virtual bool ReceivedMessageComplete() const = 0;
266+
/** Set the deserialization context version for objects returned by GetReceivedMessage. */
267+
virtual void SetReceiveVersion(int version) = 0;
268+
/** Feed wire bytes to the transport; chops off consumed bytes off front of msg_bytes. */
269+
virtual int ReceivedBytes(Span<const uint8_t>& msg_bytes) = 0;
270+
/** Retrieve a completed message from transport (only when ReceivedMessageComplete). */
271+
virtual CNetMessage GetReceivedMessage(std::chrono::microseconds time, bool& reject_message) = 0;
272272

273273
// 2. Sending side functions:
274274

@@ -325,21 +325,21 @@ class V1Transport final : public Transport
325325
Reset();
326326
}
327327

328-
bool Complete() const override EXCLUSIVE_LOCKS_REQUIRED(!m_recv_mutex)
328+
bool ReceivedMessageComplete() const override EXCLUSIVE_LOCKS_REQUIRED(!m_recv_mutex)
329329
{
330330
AssertLockNotHeld(m_recv_mutex);
331331
return WITH_LOCK(m_recv_mutex, return CompleteInternal());
332332
}
333333

334-
void SetVersion(int nVersionIn) override EXCLUSIVE_LOCKS_REQUIRED(!m_recv_mutex)
334+
void SetReceiveVersion(int nVersionIn) override EXCLUSIVE_LOCKS_REQUIRED(!m_recv_mutex)
335335
{
336336
AssertLockNotHeld(m_recv_mutex);
337337
LOCK(m_recv_mutex);
338338
hdrbuf.SetVersion(nVersionIn);
339339
vRecv.SetVersion(nVersionIn);
340340
}
341341

342-
int Read(Span<const uint8_t>& msg_bytes) override EXCLUSIVE_LOCKS_REQUIRED(!m_recv_mutex)
342+
int ReceivedBytes(Span<const uint8_t>& msg_bytes) override EXCLUSIVE_LOCKS_REQUIRED(!m_recv_mutex)
343343
{
344344
AssertLockNotHeld(m_recv_mutex);
345345
LOCK(m_recv_mutex);
@@ -351,7 +351,8 @@ class V1Transport final : public Transport
351351
}
352352
return ret;
353353
}
354-
CNetMessage GetMessage(std::chrono::microseconds time, bool& reject_message) override EXCLUSIVE_LOCKS_REQUIRED(!m_recv_mutex);
354+
355+
CNetMessage GetReceivedMessage(std::chrono::microseconds time, bool& reject_message) override EXCLUSIVE_LOCKS_REQUIRED(!m_recv_mutex);
355356

356357
void prepareForTransport(CSerializedNetMsg& msg, std::vector<unsigned char>& header) const override;
357358
};

src/test/fuzz/p2p_transport_serialization.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ FUZZ_TARGET(p2p_transport_serialization, .init = initialize_p2p_transport_serial
6464
mutable_msg_bytes.insert(mutable_msg_bytes.end(), payload_bytes.begin(), payload_bytes.end());
6565
Span<const uint8_t> msg_bytes{mutable_msg_bytes};
6666
while (msg_bytes.size() > 0) {
67-
const int handled = recv_transport.Read(msg_bytes);
67+
const int handled = recv_transport.ReceivedBytes(msg_bytes);
6868
if (handled < 0) {
6969
break;
7070
}
71-
if (recv_transport.Complete()) {
71+
if (recv_transport.ReceivedMessageComplete()) {
7272
const std::chrono::microseconds m_time{std::numeric_limits<int64_t>::max()};
7373
bool reject_message{false};
74-
CNetMessage msg = recv_transport.GetMessage(m_time, reject_message);
74+
CNetMessage msg = recv_transport.GetReceivedMessage(m_time, reject_message);
7575
assert(msg.m_type.size() <= CMessageHeader::COMMAND_SIZE);
7676
assert(msg.m_raw_message_size <= mutable_msg_bytes.size());
7777
assert(msg.m_raw_message_size == CMessageHeader::HEADER_SIZE + msg.m_message_size);

0 commit comments

Comments
 (0)