diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-02-28 07:19:06 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-02-28 08:05:02 +0100 |
commit | f3c3bd215731f55cf042e0d1c9eae4aa880f6257 (patch) | |
tree | 243e106096b2df0f27074234d6acd56d518fb407 /service/ipc_client.go | |
parent | manager: wire up config migrator (diff) | |
download | wireguard-windows-f3c3bd215731f55cf042e0d1c9eae4aa880f6257.tar.xz wireguard-windows-f3c3bd215731f55cf042e0d1c9eae4aa880f6257.zip |
service: track tunnel service status
Diffstat (limited to '')
-rw-r--r-- | service/ipc_client.go | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/service/ipc_client.go b/service/ipc_client.go index c3d08897..f2ae2b22 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 string) + cb func(tunnel string, state TunnelState) } var tunnelChangeCallbacks = make(map[*tunnelChangeCallback]bool) @@ -65,8 +65,13 @@ func InitializeIPCClient(reader *os.File, writer *os.File, events *os.File) { if err != nil || len(tunnel) == 0 { continue } + var state TunnelState + err = decoder.Decode(&state) + if err != nil || state == TunnelUnknown { + continue + } for cb := range tunnelChangeCallbacks { - cb.cb(tunnel) + cb.cb(tunnel, state) } case TunnelsChangeNotificationType: for cb := range tunnelsChangeCallbacks { @@ -122,7 +127,7 @@ func IPCClientQuit(stopTunnelsOnQuit bool) (bool, error) { return alreadyQuit, rpcClient.Call("ManagerService.Quit", stopTunnelsOnQuit, &alreadyQuit) } -func IPCClientRegisterTunnelChange(cb func(tunnel string)) *tunnelChangeCallback { +func IPCClientRegisterTunnelChange(cb func(tunnel string, state TunnelState)) *tunnelChangeCallback { s := &tunnelChangeCallback{cb} tunnelChangeCallbacks[s] = true return s |