aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/msg.h (unfollow)
Commit message (Collapse)Author
2023-06-09msg: add msg_send_from_argv shortcutEgor Tensin
2023-05-15msg: strings, not wordsEgor Tensin
2023-05-14msg: add functions for one-off communicationEgor Tensin
2023-05-14msg: enforce at least one wordEgor Tensin
Also, move some stuff to net.c where it belongs.
2023-05-13fix unnecessary #include-sEgor Tensin
2023-05-13add command module to handle request-response communicationsEgor Tensin
2023-04-29make struct ci_queue_entry opaqueEgor Tensin
2022-12-02add copyright noticesEgor Tensin
2022-08-28make proper "error" messagesEgor Tensin
Previously, the client had no way to distinguish errors from succesful calls.
2022-08-28holy crap, it actually kinda works nowEgor Tensin
Previously, I had a stupid system where I would create a thread after every accept(), and put worker descriptors in a queue. A special "scheduler" thread would then pick them out, and give out jobs to complete. The problem was, of course, I couldn't conveniently poll job status from workers. I thought about using poll(), but that turned out to be a horribly complicated API. How do I deal with partial reads, for example? I don't honestly know. Then it hit me that I could just use the threads that handle accept()ed connections as "worker threads", which would synchronously schedule jobs and wait for them to complete. This solves every problem and removes the need for a lot of inter-thread synchronization magic. It even works now, holy crap! You can launch and terminate workers at will, and they will pick up new jobs automatically. As a side not, msg_recv_and_handle turned out to be too limiting and complicated for me, so I got rid of that, and do normal msg_recv/msg_send calls.
2022-08-25msg: add msg_copy, refactoringEgor Tensin
2022-08-25msg: refactoringEgor Tensin
2022-08-25msg: add msg_dump_unknownEgor Tensin
2022-08-23cmd -> msgEgor Tensin
This I feel better conveys the meaning.