Simple-IPC API
==============

The Simple-IPC API is a collection of `ipc_` prefixed library routines
and a basic communication protocol that allows an IPC-client process to
send an application-specific IPC-request message to an IPC-server
process and receive an application-specific IPC-response message.

Communication occurs over a named pipe on Windows and a Unix domain
socket on other platforms.  IPC-clients and IPC-servers rendezvous at
a previously agreed-to application-specific pathname (which is outside
the scope of this design) that is local to the computer system.

The IPC-server routines within the server application process create a
thread pool to listen for connections and receive request messages
from multiple concurrent IPC-clients.  When received, these messages
are dispatched up to the server application callbacks for handling.
IPC-server routines then incrementally relay responses back to the
IPC-client.

The IPC-client routines within a client application process connect
to the IPC-server and send a request message and wait for a response.
When received, the response is returned back to the caller.

For example, the `fsmonitor--daemon` feature will be built as a server
application on top of the IPC-server library routines.  It will have
threads watching for file system events and a thread pool waiting for
client connections.  Clients, such as `git status`, will request a list
of file system events since a point in time and the server will
respond with a list of changed files and directories.  The formats of
the request and response are application-specific; the IPC-client and
IPC-server routines treat them as opaque byte streams.


Comparison with sub-process model
---------------------------------

The Simple-IPC mechanism differs from the existing `sub-process.c`
model (Documentation/technical/long-running-process-protocol.adoc) and
used by applications like Git-LFS.  In the LFS-style sub-process model,
the helper is started by the foreground process, communication happens
via a pair of file descriptors bound to the stdin/stdout of the
sub-process, the sub-process only serves the current foreground
process, and the sub-process exits when the foreground process
terminates.

In the Simple-IPC model the server is a very long-running service.  It
can service many clients at the same time and has a private socket or
named pipe connection to each active client.  It might be started
(on-demand) by the current client process or it might have been
started by a previous client or by the OS at boot time.  The server
process is not associated with a terminal and it persists after
clients terminate.  Clients do not have access to the stdin/stdout of
the server process and therefore must communicate over sockets or
named pipes.


Server startup and shutdown
---------------------------

How an application server based upon IPC-server is started is also
outside the scope of the Simple-IPC design and is a property of the
application using it.  For example, the server might be started or
restarted during routine maintenance operations, or it might be
started as a system service during the system boot-up sequence, or it
might be started on-demand by a foreground Git command when needed.

Similarly, server shutdown is a property of the application using
the simple-ipc routines.  For example, the server might decide to
shutdown when idle or only upon explicit request.


Simple-IPC protocol
-------------------

The Simple-IPC protocol consists of a single request message from the
client and an optional response message from the server.  Both the
client and server messages are unlimited in length and are terminated
with a flush packet.

The pkt-line routines (linkgit:gitprotocol-common[5])
are used to simplify buffer management during message generation,
transmission, and reception.  A flush packet is used to mark the end
of the message.  This allows the sender to incrementally generate and
transmit the message.  It allows the receiver to incrementally receive
the message in chunks and to know when they have received the entire
message.

The actual byte format of the client request and server response
messages are application specific.  The IPC layer transmits and
receives them as opaque byte buffers without any concern for the
content within.  It is the job of the calling application layer to
understand the contents of the request and response messages.


Summary
-------

Conceptually, the Simple-IPC protocol is similar to an HTTP REST
request.  Clients connect, make an application-specific and
stateless request, receive an application-specific
response, and disconnect.  It is a one round trip facility for
querying the server.  The Simple-IPC routines hide the socket,
named pipe, and thread pool details and allow the application
layer to focus on the task at hand.
