Connection

Connections can be TCP/IP, unix sockets, or 2 way pipes. The first 2 assume that one kernel is listening to one end point and that another kernel connects to the other end.

One dream would be to simply specify a port. At startup we try to connect to the port on localhost. If that fails, we listen on 0.0.0.0:port. Subsequent daemons would then connect to that port. This way all daemons would "automagically" connect, within a given computer. This would require auto-discovery of other kernels.

Care must be taken. If 2 daemons try to connect, fail, and try to listen, one will fail. Random back-off must be used. Also, not all processes using IKC will live long enough to make having them as the listener a good thing.

User code will want to monitor the connection, if only to find out when a remote session session is available / ceases to be avaible / other changes in state.