engineIPC starts an RPC server to handle IPC via a Unix Domain socket.
()
| 236 | |
| 237 | // engineIPC starts an RPC server to handle IPC via a Unix Domain socket. |
| 238 | func (e *Engine) engineIPC() { |
| 239 | if err := server.RemoveUnixSocket(e.config.SocketPath); err != nil { |
| 240 | log.Fatalf("Failed to remove socket: %v", err) |
| 241 | } |
| 242 | ln, err := net.Listen("unix", e.config.SocketPath) |
| 243 | if err != nil { |
| 244 | log.Fatalf("Listen failed: %v", err) |
| 245 | } |
| 246 | defer os.Remove(e.config.SocketPath) |
| 247 | |
| 248 | seesawIPC := rpc.NewServer() |
| 249 | seesawIPC.Register(&SeesawEngine{e}) |
| 250 | go server.RPCAccept(ln, seesawIPC) |
| 251 | |
| 252 | <-e.shutdownIPC |
| 253 | ln.Close() |
| 254 | e.shutdownIPC <- true |
| 255 | } |
| 256 | |
| 257 | // syncRPC starts a server to handle synchronisation RPCs via a TCP socket. |
| 258 | func (e *Engine) syncRPC() { |
no test coverage detected