Support receiving IPC messages in multiple parts

This commit is contained in:
patrick96
2021-09-12 23:26:24 +02:00
committed by Patrick Ziegler
parent dd4088910e
commit db52106934
6 changed files with 40 additions and 22 deletions

View File

@ -79,11 +79,12 @@ struct FSEventHandle : public UVHandle<uv_fs_event_t, const char*, int, int> {
};
struct PipeHandle : public UVHandleGeneric<uv_pipe_t, uv_stream_t, ssize_t, const uv_buf_t*> {
PipeHandle(uv_loop_t* loop, std::function<void(const string)> fun);
PipeHandle(uv_loop_t* loop, std::function<void(const string)> fun, std::function<void(void)> eof_cb);
void start(int fd);
void read_cb(ssize_t nread, const uv_buf_t* buf);
std::function<void(const string)> func;
std::function<void(void)> eof_cb;
int fd;
};
@ -114,7 +115,7 @@ class eventloop {
void signal_handler(int signum, std::function<void(int)> fun);
void poll_handler(int events, int fd, std::function<void(int, int)> fun);
void fs_event_handler(const string& path, std::function<void(const char*, int, int)> fun);
void pipe_handle(int fd, std::function<void(const string)> fun);
void pipe_handle(int fd, std::function<void(const string)> fun, std::function<void(void)> eof_cb);
void timer_handle(uint64_t timeout, uint64_t repeat, std::function<void(void)> fun);
AsyncHandle_t async_handle(std::function<void(void)> fun);