|
@@ -3,6 +3,12 @@
|
|
|
#include "config.hpp"
|
|
|
#include "net.hpp"
|
|
|
|
|
|
+// The command type byte values
|
|
|
+
|
|
|
+#define COMMAND_EPOCH 0x00
|
|
|
+#define COMMAND_MESSAGE 0x01
|
|
|
+#define COMMAND_CHUNK 0x02
|
|
|
+
|
|
|
NodeIO::NodeIO(tcp::socket &&socket) : sock(std::move(socket))
|
|
|
{
|
|
|
}
|
|
@@ -83,13 +89,13 @@ void NodeIO::async_send_commands()
|
|
|
|
|
|
void NodeIO::send_epoch(uint32_t epoch_num)
|
|
|
{
|
|
|
- uint64_t header = (uint64_t(epoch_num) << 8) + 0x00;
|
|
|
+ uint64_t header = (uint64_t(epoch_num) << 8) + COMMAND_EPOCH;
|
|
|
send_header_data(header, NULL, 0);
|
|
|
}
|
|
|
|
|
|
void NodeIO::send_message_header(uint32_t tot_message_len)
|
|
|
{
|
|
|
- uint64_t header = (uint64_t(tot_message_len) << 8) + 0x01;
|
|
|
+ uint64_t header = (uint64_t(tot_message_len) << 8) + COMMAND_MESSAGE;
|
|
|
send_header_data(header, NULL, 0);
|
|
|
// If we're sending a new message header, we have to have finished
|
|
|
// sending the previous message.
|
|
@@ -101,7 +107,7 @@ void NodeIO::send_message_header(uint32_t tot_message_len)
|
|
|
void NodeIO::send_chunk(uint8_t *data, uint32_t chunk_len)
|
|
|
{
|
|
|
assert(chunk_len <= MAXCHUNKSIZE);
|
|
|
- uint64_t header = (uint64_t(chunk_len) << 8) + 0x02;
|
|
|
+ uint64_t header = (uint64_t(chunk_len) << 8) + COMMAND_CHUNK;
|
|
|
send_header_data(header, data, chunk_len);
|
|
|
chunksize_inflight += chunk_len;
|
|
|
assert(chunksize_inflight <= msgsize_inflight);
|
|
@@ -122,16 +128,16 @@ void NodeIO::recv_commands(
|
|
|
error_cb(ec);
|
|
|
return;
|
|
|
}
|
|
|
- if ((receive_header & 0xff) == 0x00) {
|
|
|
+ if ((receive_header & 0xff) == COMMAND_EPOCH) {
|
|
|
epoch_cb(uint32_t(receive_header >> 8));
|
|
|
recv_commands(error_cb, epoch_cb, message_cb, chunk_cb);
|
|
|
- } else if ((receive_header & 0xff) == 0x01) {
|
|
|
+ } else if ((receive_header & 0xff) == COMMAND_MESSAGE) {
|
|
|
assert(recv_msgsize_inflight == recv_chunksize_inflight);
|
|
|
recv_msgsize_inflight = uint32_t(receive_header >> 8);
|
|
|
recv_chunksize_inflight = 0;
|
|
|
message_cb(recv_msgsize_inflight);
|
|
|
recv_commands(error_cb, epoch_cb, message_cb, chunk_cb);
|
|
|
- } else if ((receive_header & 0xff) == 0x02) {
|
|
|
+ } else if ((receive_header & 0xff) == COMMAND_CHUNK) {
|
|
|
uint32_t this_chunk_size = uint32_t(receive_header >> 8);
|
|
|
assert(recv_chunksize_inflight + this_chunk_size <=
|
|
|
recv_msgsize_inflight);
|