Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite77ea5a

Browse files
committed
chore: handle waking from device sleep
1 parentd2ed4a9 commite77ea5a

File tree

4 files changed

+30
-6
lines changed

4 files changed

+30
-6
lines changed

‎Coder Desktop/Coder Desktop/XPCInterface.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,13 @@ import VPNLib
5959
}
6060
}
6161

62-
func onPeerUpdate(_ data:Data){
62+
func onPeerUpdate(_ data:Data, isState:Bool){
6363
Task{@MainActorin
64-
svc.onExtensionPeerUpdate(data)
64+
if isState{
65+
svc.onExtensionPeerState(data)
66+
}else{
67+
svc.onExtensionPeerUpdate(data)
68+
}
6569
}
6670
}
6771

‎Coder Desktop/VPN/Manager.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ actor Manager {
111111
iflet conn= globalXPCListenerDelegate.conn{
112112
do{
113113
letdata=try msg.peerUpdate.serializedData()
114-
conn.onPeerUpdate(data)
114+
conn.onPeerUpdate(data, isState:false)
115115
}catch{
116116
logger.error("failed to send peer update to client:\(error)")
117117
}
@@ -218,6 +218,15 @@ actor Manager {
218218
}
219219
return resp.peerUpdate
220220
}
221+
222+
func forcePushPeerState()asyncthrows{
223+
letstate=tryawaitgetPeerState().serializedData()
224+
guardlet conn= globalXPCListenerDelegate.connelse{
225+
logger.info("app was not running on wake, not pushing state")
226+
return
227+
}
228+
conn.onPeerUpdate(state, isState:true)
229+
}
221230
}
222231

223232
structManagerConfig{

‎Coder Desktop/VPN/PacketTunnelProvider.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,14 +122,24 @@ class PacketTunnelProvider: NEPacketTunnelProvider, @unchecked Sendable {
122122
}
123123

124124
overridefunc sleep(completionHandler:@escaping()->Void){
125-
//Add code here toget ready tosleep.
125+
//Nothing we need todo onsleep right now
126126
logger.debug("sleep called")
127127
completionHandler()
128128
}
129129

130130
overridefunc wake(){
131-
// Add code here to wake up.
132131
logger.debug("wake called")
132+
guardlet managerelse{
133+
logger.error("wake called with nil Manager")
134+
return
135+
}
136+
Task{
137+
do{
138+
tryawait manager.forcePushPeerState()
139+
}catch{
140+
logger.error("error pushing peer state:\(error, privacy:.public)")
141+
}
142+
}
133143
}
134144

135145
// Wrapper around `setTunnelNetworkSettings` that supports merging updates

‎Coder Desktop/VPNLib/XPC.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import Foundation
99
@preconcurrency
1010
@objcpublicprotocolVPNXPCClientCallbackProtocol{
1111
// data is a serialized `Vpn_PeerUpdate`
12-
func onPeerUpdate(_ data:Data)
12+
// If `isState` is true, the update should replace the current state.
13+
func onPeerUpdate(_ data:Data, isState:Bool)
1314
func removeQuarantine(path:String, reply:@escaping(Bool)->Void)
1415
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp