diff options
author | ubq323 <ubq323@ubq323.website> | 2024-04-27 21:27:12 +0100 |
---|---|---|
committer | ubq323 <ubq323@ubq323.website> | 2024-04-27 21:27:17 +0100 |
commit | 907cda4c172936c6d5b7ea2ac1a3a0986c875853 (patch) | |
tree | 46020134dd1b8c3434fde07ab6cf9346391bf70b /client/main.ha | |
parent | 4c7156d0b20447e29f354679acdcd28480df91bc (diff) |
use poll to check writing as well as reading; packet_reader handles both now
Diffstat (limited to 'client/main.ha')
-rw-r--r-- | client/main.ha | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/client/main.ha b/client/main.ha index 081c422..30a8341 100644 --- a/client/main.ha +++ b/client/main.ha @@ -47,9 +47,11 @@ export fn main() void = { }; const pollfd: [1]poll::pollfd = [ poll::pollfd { - fd = conn, events=poll::event::POLLIN, revents = 0 + fd = conn, + events=poll::event::POLLIN | poll::event::POLLOUT, + ... }]; - const packet_reader = packet_reader::new(); + const packet_reader = packet_reader::new(conn); // paintui state let pstate = paintui::state { size_idx = 4, ... }; @@ -64,7 +66,7 @@ export fn main() void = { let mouse_down = false; - process_chunk_loadedness(&pmgr, conn, camera_pos); + process_chunk_loadedness(&pmgr, &packet_reader, camera_pos); const win_pic = picture_from_surface(wsurf, (9,9)); for (!quit) { @@ -108,18 +110,20 @@ export fn main() void = { case void => yield; case let op: drawing::op => perform_drawop(&pmgr, op); - packet_reader::send(conn, op: packet_reader::packet_drawop)!; + packet_reader::write(&packet_reader, op: packet_reader::packet_drawop)!; }; if (did_move) { - packet_reader::send(conn, camera_pos: packet_reader::packet_position)!; - process_chunk_loadedness(&pmgr, conn, camera_pos); + packet_reader::write(&packet_reader, camera_pos: packet_reader::packet_position)!; + process_chunk_loadedness(&pmgr, &packet_reader, camera_pos); }; const n = poll::poll(pollfd, poll::NONBLOCK)!; if (n > 0) { - packet_reader::read(&packet_reader, conn)!; - for (true) match (packet_reader::next(&packet_reader)) { + const should_read = 0 != pollfd[0].revents & poll::event::POLLIN; + const should_write = 0 != pollfd[0].revents & poll::event::POLLOUT; + packet_reader::service(&packet_reader, should_read, should_write)!; + for (true) match (packet_reader::read_next(&packet_reader)) { case done => break; case let e: packet_reader::error => fmt::fatalf("death: packet_reader: {}", e); |