aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/service/ipc_client.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-02-28 07:19:06 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2019-02-28 08:05:02 +0100
commitf3c3bd215731f55cf042e0d1c9eae4aa880f6257 (patch)
tree243e106096b2df0f27074234d6acd56d518fb407 /service/ipc_client.go
parentmanager: wire up config migrator (diff)
downloadwireguard-windows-f3c3bd215731f55cf042e0d1c9eae4aa880f6257.tar.xz
wireguard-windows-f3c3bd215731f55cf042e0d1c9eae4aa880f6257.zip
service: track tunnel service status
Diffstat (limited to '')
-rw-r--r--service/ipc_client.go11
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