mirror of
https://git.robbyzambito.me/zaprus
synced 2025-12-20 16:24:50 +00:00
This commit is contained in:
@@ -1,3 +1,6 @@
|
|||||||
|
const base64Enc = std.base64.Base64Encoder.init(std.base64.standard_alphabet_chars, '=');
|
||||||
|
const base64Dec = std.base64.Base64Decoder.init(std.base64.standard_alphabet_chars, '=');
|
||||||
|
|
||||||
var rand: ?Random = null;
|
var rand: ?Random = null;
|
||||||
|
|
||||||
pub fn init() !void {
|
pub fn init() !void {
|
||||||
@@ -15,6 +18,10 @@ pub fn deinit() void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn broadcastSaprusMessage(msg: *SaprusMessage, udp_port: u16) !void {
|
fn broadcastSaprusMessage(msg: *SaprusMessage, udp_port: u16) !void {
|
||||||
|
if (false) {
|
||||||
|
var foo: gcat.nic.RawSocket = try .init("enp7s0"); // /proc/net/dev
|
||||||
|
defer foo.deinit();
|
||||||
|
}
|
||||||
const msg_bytes = msg.asBytes();
|
const msg_bytes = msg.asBytes();
|
||||||
try msg.networkFromNativeEndian();
|
try msg.networkFromNativeEndian();
|
||||||
defer msg.nativeFromNetworkEndian() catch unreachable;
|
defer msg.nativeFromNetworkEndian() catch unreachable;
|
||||||
@@ -41,11 +48,15 @@ fn broadcastSaprusMessage(msg: *SaprusMessage, udp_port: u16) !void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn sendRelay(payload: []const u8, dest: [4]u8, allocator: Allocator) !void {
|
pub fn sendRelay(payload: []const u8, dest: [4]u8, allocator: Allocator) !void {
|
||||||
const msg: *SaprusMessage = try .init(allocator, .relay, @intCast(payload.len));
|
const msg: *SaprusMessage = try .init(
|
||||||
|
allocator,
|
||||||
|
.relay,
|
||||||
|
@intCast(base64Enc.calcSize(payload.len)),
|
||||||
|
);
|
||||||
defer msg.deinit(allocator);
|
defer msg.deinit(allocator);
|
||||||
const relay = (try msg.getSaprusTypePayload()).relay;
|
const relay = (try msg.getSaprusTypePayload()).relay;
|
||||||
relay.dest = dest;
|
relay.dest = dest;
|
||||||
@memcpy(relay.getPayload(), payload);
|
_ = base64Enc.encode(relay.getPayload(), payload);
|
||||||
|
|
||||||
try broadcastSaprusMessage(msg, 8888);
|
try broadcastSaprusMessage(msg, 8888);
|
||||||
}
|
}
|
||||||
@@ -74,11 +85,6 @@ pub fn sendInitialConnection(payload: []const u8, initial_port: u16, allocator:
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn connect(payload: []const u8, allocator: Allocator) !?SaprusConnection {
|
pub fn connect(payload: []const u8, allocator: Allocator) !?SaprusConnection {
|
||||||
if (false) {
|
|
||||||
var foo: gcat.nic.RawSocket = try .init("enp7s0"); // /proc/net/dev
|
|
||||||
defer foo.deinit();
|
|
||||||
}
|
|
||||||
|
|
||||||
var initial_port: u16 = 0;
|
var initial_port: u16 = 0;
|
||||||
if (rand) |r| {
|
if (rand) |r| {
|
||||||
initial_port = r.intRangeAtMost(u16, 1024, 65000);
|
initial_port = r.intRangeAtMost(u16, 1024, 65000);
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
const base64Enc = std.base64.Base64Encoder.init(std.base64.standard_alphabet_chars, '=');
|
|
||||||
const base64Dec = std.base64.Base64Decoder.init(std.base64.standard_alphabet_chars, '=');
|
|
||||||
|
|
||||||
/// Type tag for Message union.
|
/// Type tag for Message union.
|
||||||
/// This is the first value in the actual packet sent over the network.
|
/// This is the first value in the actual packet sent over the network.
|
||||||
pub const PacketType = enum(u16) {
|
pub const PacketType = enum(u16) {
|
||||||
|
|||||||
Reference in New Issue
Block a user