feat: drop use std.net instead of zig-network
This commit is contained in:
parent
e5c1d4d2b7
commit
3400aa7c3f
|
@ -1,12 +1,12 @@
|
|||
const std = @import("std");
|
||||
const network = @import("network");
|
||||
const Packet = @import("Packet.zig");
|
||||
|
||||
const Socket = network.Socket;
|
||||
const Allocator = std.mem.Allocator;
|
||||
const Atomic = std.atomic.Atomic;
|
||||
const Emulator = @import("lib.zig").Emulator;
|
||||
|
||||
const Atomic = std.atomic.Atomic;
|
||||
const Allocator = std.mem.Allocator;
|
||||
const Server = std.net.StreamServer;
|
||||
const Connection = Server.Connection;
|
||||
|
||||
const Self = @This();
|
||||
const log = std.log.scoped(.Server);
|
||||
const port: u16 = 2424;
|
||||
|
@ -57,32 +57,24 @@ pub const memory_map: []const u8 =
|
|||
// FIXME: Shouldn't this be a Packet Struct?
|
||||
pkt_cache: ?[]const u8 = null,
|
||||
|
||||
client: Socket,
|
||||
_socket: Socket,
|
||||
server: Server,
|
||||
client: Server.Connection,
|
||||
|
||||
emu: Emulator,
|
||||
|
||||
pub fn init(emulator: Emulator) !Self {
|
||||
try network.init();
|
||||
var server = std.net.StreamServer.init(.{});
|
||||
server.listen(std.net.Address.initIp4([_]u8{0} ** 4, port));
|
||||
|
||||
var socket = try Socket.create(.ipv4, .tcp);
|
||||
try socket.bindToPort(port);
|
||||
try socket.listen();
|
||||
var client = try server.accept();
|
||||
log.info("client connected from {}", .{client.address});
|
||||
|
||||
var client = try socket.accept(); // TODO: This blocks, is this OK?
|
||||
|
||||
const endpoint = try client.getLocalEndPoint();
|
||||
log.info("client connected from {}", .{endpoint});
|
||||
|
||||
return .{ .emu = emulator, ._socket = socket, .client = client };
|
||||
return .{ .emu = emulator, .server = server, .client = client };
|
||||
}
|
||||
|
||||
pub fn deinit(self: *Self, allocator: Allocator) void {
|
||||
self.reset(allocator);
|
||||
|
||||
self.client.close();
|
||||
self._socket.close();
|
||||
network.deinit();
|
||||
self.server.deinit();
|
||||
|
||||
self.* = undefined;
|
||||
}
|
||||
|
@ -99,7 +91,7 @@ pub fn run(self: *Self, allocator: Allocator, quit: *Atomic(bool)) !void {
|
|||
var buf: [Packet.max_len]u8 = undefined;
|
||||
|
||||
while (true) {
|
||||
const len = try self.client.receive(&buf);
|
||||
const len = try self.client.stream.readAll(&buf);
|
||||
if (len == 0) break;
|
||||
|
||||
if (quit.load(.Monotonic)) break;
|
||||
|
@ -113,7 +105,7 @@ pub fn run(self: *Self, allocator: Allocator, quit: *Atomic(bool)) !void {
|
|||
}
|
||||
|
||||
fn parse(self: *Self, allocator: Allocator, input: []const u8) !Action {
|
||||
// log.debug("-> {s}", .{input});
|
||||
log.debug("-> {s}", .{input});
|
||||
|
||||
return switch (input[0]) {
|
||||
'+' => blk: {
|
||||
|
@ -150,7 +142,7 @@ fn send(self: *Self, allocator: Allocator, action: Action) !void {
|
|||
switch (action) {
|
||||
.send => |pkt| {
|
||||
_ = try self.client.send(pkt);
|
||||
// log.debug("<- {s}", .{pkt});
|
||||
log.debug("<- {s}", .{pkt});
|
||||
|
||||
self.reset(allocator);
|
||||
self.pkt_cache = pkt;
|
||||
|
@ -160,18 +152,18 @@ fn send(self: *Self, allocator: Allocator, action: Action) !void {
|
|||
|
||||
if (self.pkt_cache) |pkt| {
|
||||
_ = try self.client.send(pkt);
|
||||
// log.debug("<- {s}", .{pkt});
|
||||
log.debug("<- {s}", .{pkt});
|
||||
}
|
||||
},
|
||||
.ack => {
|
||||
_ = try self.client.send("+");
|
||||
// log.debug("<- +", .{});
|
||||
log.debug("<- +", .{});
|
||||
|
||||
self.reset(allocator);
|
||||
},
|
||||
.nack => {
|
||||
_ = try self.client.send("-");
|
||||
// log.debug("<- -", .{});
|
||||
log.debug("<- -", .{});
|
||||
|
||||
self.reset(allocator);
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue