From cae11b088a2b052dc768b84612eb503f81b52005 Mon Sep 17 00:00:00 2001 From: oxlime Date: Fri, 20 Sep 2024 09:02:50 -0500 Subject: [PATCH] deserialize --- src/network/wire/lib.zig | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/network/wire/lib.zig b/src/network/wire/lib.zig index 578f5c4..fe22328 100644 --- a/src/network/wire/lib.zig +++ b/src/network/wire/lib.zig @@ -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); @@ -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, } } @@ -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, } }