diff options
Diffstat (limited to 'src/Client.zig')
-rw-r--r-- | src/Client.zig | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/Client.zig b/src/Client.zig index 8b2f71f..37ef3ac 100644 --- a/src/Client.zig +++ b/src/Client.zig @@ -2,13 +2,13 @@ const base64Enc = std.base64.Base64Encoder.init(std.base64.standard_alphabet_cha const base64Dec = std.base64.Base64Decoder.init(std.base64.standard_alphabet_chars, '='); rand: Random, -socket: gcat.nic.RawSocket, +writer: *std.Io.Writer, const Self = @This(); const max_message_size = 2048; -pub fn init(interface_name: [:0]const u8) !Self { +pub fn init(writer: *std.Io.Writer) !Self { var prng = Random.DefaultPrng.init(blk: { var seed: u64 = undefined; try posix.getrandom(mem.asBytes(&seed)); @@ -16,16 +16,14 @@ pub fn init(interface_name: [:0]const u8) !Self { }); const rand = prng.random(); - const socket: gcat.nic.RawSocket = try .init(interface_name); - return .{ .rand = rand, - .socket = socket, + .writer = writer, }; } pub fn deinit(self: *Self) void { - self.socket.deinit(); + self.writer.flush() catch {}; } /// Used for relay messages and connection handshake. @@ -70,16 +68,14 @@ fn broadcastInitialInterestMessage(self: *Self, msg_bytes: []align(@alignOf(Sapr const saprus_start_byte = 42; @memcpy(packet_bytes[saprus_start_byte .. saprus_start_byte + msg_bytes.len], msg_bytes); - try self.socket.linkLayer().send(packet_bytes[0 .. saprus_start_byte + msg_bytes.len]); + const writer = self.writer; + _ = try writer.write(packet_bytes[0 .. saprus_start_byte + msg_bytes.len]); + try writer.flush(); } // fn broadcastSaprusMessage(msg_bytes: []align(@alignOf(SaprusMessage)) u8) !void {} fn broadcastSaprusMessage(msg_bytes: []align(@alignOf(SaprusMessage)) u8, udp_port: u16) !void { - if (false) { - var foo: gcat.nic.RawSocket = try .init("enp7s0"); // /proc/net/dev - defer foo.deinit(); - } const msg: *SaprusMessage = try .bytesAsValue(msg_bytes); try msg.networkFromNativeEndian(); defer msg.nativeFromNetworkEndian() catch unreachable; @@ -194,4 +190,3 @@ const posix = std.posix; const mem = std.mem; const network = @import("network"); -const gcat = @import("gatorcat"); |