Skip to content

Commit 846f75d

Browse files
committed
capture weak reference to self when handling messages on device
1 parent b27e922 commit 846f75d

File tree

2 files changed

+4
-36
lines changed

2 files changed

+4
-36
lines changed

Examples/OCADevice/DeviceApp.swift

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -146,44 +146,12 @@ public enum DeviceApp {
146146
}
147147

148148
try await withThrowingTaskGroup(of: Void.self) { taskGroup in
149-
taskGroup.addTask {
150-
print("Starting OCP.1 IPv4 stream endpoint \(streamEndpoint)...")
151-
try await streamEndpoint.run()
152-
}
153-
taskGroup.addTask {
154-
print("Starting OCP.1 IPv6 stream endpoint \(stream6Endpoint)...")
155-
try await stream6Endpoint.run()
156-
}
157-
#if os(Linux) || canImport(FlyingSocks)
158-
taskGroup.addTask {
159-
print("Starting OCP.1 IPv4 datagram endpoint \(datagramEndpoint)...")
160-
try await datagramEndpoint.run()
161-
}
162-
taskGroup.addTask {
163-
print("Starting OCP.1 IPv6 datagram endpoint \(datagram6Endpoint)...")
164-
try await datagram6Endpoint.run()
165-
}
166-
if let domainSocketStreamEndpoint {
167-
taskGroup.addTask {
168-
print("Starting OCP.1 domain socket stream endpoint \(domainSocketStreamEndpoint)...")
169-
try await domainSocketStreamEndpoint.run()
170-
}
171-
}
172-
#endif
173-
#if os(Linux)
174149
if let domainSocketDatagramEndpoint {
175150
taskGroup.addTask {
176151
print("Starting OCP.1 domain socket datagram endpoint \(domainSocketDatagramEndpoint)...")
177152
try await domainSocketDatagramEndpoint.run()
178153
}
179154
}
180-
#endif
181-
#if canImport(FlyingSocks)
182-
taskGroup.addTask {
183-
print("Starting OCP.1 WebSocket endpoint \(webSocketEndpoint)...")
184-
try await webSocketEndpoint.run()
185-
}
186-
#endif
187155
try await taskGroup.next()
188156
}
189157
}

Sources/SwiftOCADevice/OCP.1/Ocp1ControllerInternal.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,9 @@ extension Ocp1ControllerInternal {
156156
endpoint.traceMessage(message, controller: self, direction: .rx)
157157
}
158158

159-
let responses = try await messageList.messages.asyncMap { @Sendable message in
159+
let responses = try await messageList.messages.asyncMap { @Sendable [weak self] message in
160160
// note for stream connections this will only throw for invalidMessageType
161-
try await _handle(for: endpoint, message: message)
161+
try await self?._handle(for: endpoint, message: message)
162162
}
163163

164164
if messageList.responseRequired {
@@ -180,8 +180,8 @@ extension Ocp1ControllerInternal {
180180
await withTaskGroup(of: Void.self) { group in
181181
do {
182182
for try await messageList in messages {
183-
group.addTask {
184-
try? await self.handle(for: endpoint, messageList: messageList)
183+
group.addTask { [weak self] in
184+
try? await self?.handle(for: endpoint, messageList: messageList)
185185
}
186186
}
187187
} catch Ocp1Error.notConnected {

0 commit comments

Comments
 (0)