main.zig 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. const std = @import("std");
  2. const net = std.net;
  3. const posix = std.posix;
  4. const socket = @import("socket.zig");
  5. const command = @import("command.zig");
  6. const storage = @import("storage.zig");
  7. pub fn main() !void {
  8. const listener = try socket.init(8080);
  9. defer posix.close(listener);
  10. std.debug.print("pizzakv!\n", .{});
  11. while (true) {
  12. var client_address: net.Address = undefined;
  13. var client_address_len: posix.socklen_t = @sizeOf(net.Address);
  14. const conn = posix.accept(listener, &client_address.any, &client_address_len, 0) catch |err| {
  15. std.debug.print("error accept: {any}\n", .{err});
  16. continue;
  17. };
  18. defer posix.close(conn);
  19. std.debug.print("Connection received\n", .{});
  20. var buf: [128]u8 = undefined;
  21. const n = try socket.read(conn, &buf);
  22. const response = command.parse(buf[0..n]) orelse {
  23. std.debug.print("Failed to parse message\n", .{});
  24. continue;
  25. };
  26. socket.write(conn, response) catch |err| {
  27. // This can easily happen, say if the client disconnects.
  28. std.debug.print("error writing: {any}\n", .{err});
  29. };
  30. }
  31. }