From 3245ef2f821fee0580f7d97c6f05223c2673e318 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Mon, 29 Apr 2019 15:52:17 +0200 Subject: service: pass global state with notification --- service/ipc_client.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'service/ipc_client.go') diff --git a/service/ipc_client.go b/service/ipc_client.go index 55fc043d..a6241af2 100644 --- a/service/ipc_client.go +++ b/service/ipc_client.go @@ -37,7 +37,7 @@ const ( var rpcClient *rpc.Client type TunnelChangeCallback struct { - cb func(tunnel *Tunnel, state TunnelState, err error) + cb func(tunnel *Tunnel, state TunnelState, globalState TunnelState, err error) } var tunnelChangeCallbacks = make(map[*TunnelChangeCallback]bool) @@ -70,6 +70,11 @@ func InitializeIPCClient(reader *os.File, writer *os.File, events *os.File) { if err != nil { continue } + var globalState TunnelState + err = decoder.Decode(&globalState) + if err != nil { + continue + } var errStr string err = decoder.Decode(&errStr) if err != nil { @@ -84,7 +89,7 @@ func InitializeIPCClient(reader *os.File, writer *os.File, events *os.File) { } t := &Tunnel{tunnel} for cb := range tunnelChangeCallbacks { - cb.cb(t, state, retErr) + cb.cb(t, state, globalState, retErr) } case TunnelsChangeNotificationType: for cb := range tunnelsChangeCallbacks { @@ -160,7 +165,7 @@ func IPCClientQuit(stopTunnelsOnQuit bool) (bool, error) { return alreadyQuit, rpcClient.Call("ManagerService.Quit", stopTunnelsOnQuit, &alreadyQuit) } -func IPCClientRegisterTunnelChange(cb func(tunnel *Tunnel, state TunnelState, err error)) *TunnelChangeCallback { +func IPCClientRegisterTunnelChange(cb func(tunnel *Tunnel, state TunnelState, globalState TunnelState, err error)) *TunnelChangeCallback { s := &TunnelChangeCallback{cb} tunnelChangeCallbacks[s] = true return s -- cgit v1.2.3-59-g8ed1b