This series introduces a multi-threaded IPC mechanism called "Simple IPC". This is a library-layer feature to make it easy to create very long running daemon/service applications and for unrelated Git commands to communicate with them. Communication uses pkt-line messaging over a Windows named pipe or Unix domain socket. On the server side, Simple IPC implements a (platform-specific) connection listener and worker thread-pool to accept and handle a series of client connections. The server functionality is completely hidden behind the ipc_server_run() and ipc_server_run_async() APIs. The daemon/service application only needs to define an application-specific callback to handle client requests. Note that Simple IPC is completely unrelated to the long running process feature (described in sub-process.h) where the lifetime of a "sub-process" child is bound to that of the invoking parent process and communication occurs over the child's stdin/stdout. Simple IPC will serve as a basis for a future builtin FSMonitor daemon feature. Jeff Hostetler (7): pkt-line: use stack rather than static buffer in packet_write_gently() simple-ipc: design documentation for new IPC mechanism simple-ipc: add win32 implementation unix-socket: create gentle version of unix_stream_listen() unix-socket: add no-chdir option to unix_stream_listen_gently() simple-ipc: add t/helper/test-simple-ipc and t0052 simple-ipc: add Unix domain socket implementation Johannes Schindelin (3): pkt-line: (optionally) libify the packet readers pkt-line: optionally skip the flush packet in write_packetized_from_buf() pkt-line: accept additional options in read_packetized_to_strbuf() Documentation/technical/api-simple-ipc.txt | 31 + Makefile | 8 + compat/simple-ipc/ipc-shared.c | 28 + compat/simple-ipc/ipc-unix-socket.c | 1093 ++++++++++++++++++++ compat/simple-ipc/ipc-win32.c | 723 +++++++++++++ config.mak.uname | 2 + contrib/buildsystems/CMakeLists.txt | 6 + convert.c | 4 +- pkt-line.c | 30 +- pkt-line.h | 13 +- simple-ipc.h | 221 ++++ t/helper/test-simple-ipc.c | 485 +++++++++ t/helper/test-tool.c | 1 + t/helper/test-tool.h | 1 + t/t0052-simple-ipc.sh | 129 +++ unix-socket.c | 58 +- unix-socket.h | 9 + 17 files changed, 2828 insertions(+), 14 deletions(-) create mode 100644 Documentation/technical/api-simple-ipc.txt create mode 100644 compat/simple-ipc/ipc-shared.c create mode 100644 compat/simple-ipc/ipc-unix-socket.c create mode 100644 compat/simple-ipc/ipc-win32.c create mode 100644 simple-ipc.h create mode 100644 t/helper/test-simple-ipc.c create mode 100755 t/t0052-simple-ipc.sh base-commit: 71ca53e8125e36efbda17293c50027d31681a41f Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-766%2Fjeffhostetler%2Fsimple-ipc-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-766/jeffhostetler/simple-ipc-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/766 -- gitgitgadget