[PATCH 00/10] [RFC] Simple IPC Mechanism
flat view
STALE2046d
From: Jeff Hostetler via GitGitGadget <hidden>
Date: 2021-01-12 15:32:33
Subsystem:
documentation, kernel build + files below scripts/ (unless maintained elsewhere), the rest · Maintainers:
Jonathan Corbet, Nathan Chancellor, Nicolas Schier, Linus Torvalds
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