Skip to content

Commit

Permalink
deserialize
Browse files Browse the repository at this point in the history
  • Loading branch information
oxlime committed Sep 20, 2024
1 parent 7490f7e commit cae11b0
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions src/network/wire/lib.zig
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ pub fn receiveMessage(allocator: std.mem.Allocator, r: anytype) !protocol.messag
protocol.messages.Message{ .Version = try protocol.messages.VersionMessage.deserializeReader(allocator, r)}
else if (std.mem.eql(u8, &command, protocol.messages.VerackMessage.name()))
protocol.messages.Message{ .Verack = try protocol.messages.VerackMessage.deserializeReader(allocator, r)}
else if (std.mem.eql(u8, &command, protocol.messages.MempoolMessage.name()))
protocol.messages.Message{ .Mempool = try protocol.messages.MempoolMessage.deserializeReader(allocator, r)}
else
return error.InvalidCommand;
errdefer message.deinit(allocator);
Expand Down Expand Up @@ -133,6 +135,7 @@ test "ok_send_version_message" {
switch (received_message) {
.Version => |rm| try std.testing.expect(message.eql(&rm)),
.Verack => unreachable,
.Mempool => unreachable,
}
}

Expand All @@ -157,6 +160,32 @@ test "ok_send_verack_message" {
switch (received_message) {
.Verack => {},
.Version => unreachable,
.Mempool => unreachable,
}
}

test "ok_send_mempool_message" {
const ArrayList = std.ArrayList;
const test_allocator = std.testing.allocator;
const MempoolMessage = protocol.messages.MempoolMessage;

var list: std.ArrayListAligned(u8, null) = ArrayList(u8).init(test_allocator);
defer list.deinit();

const message = MempoolMessage{};

const writer = list.writer();
try sendMessage(test_allocator, writer, protocol.PROTOCOL_VERSION, protocol.BitcoinNetworkId.MAINNET, message);
var fbs: std.io.FixedBufferStream([]u8) = std.io.fixedBufferStream(list.items);
const reader = fbs.reader();

const received_message = try receiveMessage(test_allocator, reader);
defer received_message.deinit(test_allocator);

switch (received_message) {
.Mempool => {},
.Verack => unreachable,
.Version => unreachable,
}
}

Expand Down

0 comments on commit cae11b0

Please sign in to comment.