Skip to content

Commit 672b7c2

Browse files
committed
Improve logging
1 parent e5c34ab commit 672b7c2

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

Sources/StructuredWebSocketClient/URLSession+MessageTransport.swift

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,16 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
8787
}
8888

8989
public nonisolated func close(with closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?) {
90+
logger.trace("\(#function) called")
9091
// If the task is already closed, we need to call onClose, as that is
9192
// the only way the events channel is finished.
9293
guard self.wsTask.closeCode == .invalid else {
93-
Task { await self.onClose(closeCode: closeCode, reason: reason) }
94+
Task { await self.onClose(closeCode: closeCode, reason: reason, caller: "\(#function) [1]") }
9495
return
9596
}
9697
self.wsTask.cancel(with: closeCode, reason: reason) // sends close frame
9798
// although if the socket never opened, we still need to close the events… 🤦‍♂️
98-
Task { await self.onClose(closeCode: closeCode, reason: reason) }
99+
Task { await self.onClose(closeCode: closeCode, reason: reason, caller: "\(#function) [2]") }
99100
}
100101

101102
public nonisolated func connect() -> AsyncChannel<WebSocketEvent> {
@@ -126,9 +127,10 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
126127
await self.readNextMessage(1)
127128
}
128129

129-
private func onClose(closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?) async {
130+
private func onClose(closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?, caller: String = #function) async {
131+
logger.trace("\(#function) called from \(caller)")
130132
guard !self.isAlreadyClosed else {
131-
logger.warning("⚠️ self.isAlreadyClosed in \(#function)")
133+
logger.trace("self.isAlreadyClosed in \(#function) called from \(caller)")
132134
// Due to delegate callbacks, we can get here more than once. Don't send multiple
133135
// disconnect events or log multiple closures.
134136
return
@@ -142,7 +144,8 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
142144
self.isAlreadyClosed = true
143145
}
144146

145-
private func didCompleteWithError(_ error: (any Error)?) async {
147+
private func didCompleteWithError(_ error: (any Error)?, caller: String = #function) async {
148+
logger.trace("\(#function) with isAlreadyClosed: \(self.isAlreadyClosed), error: \(String(describing: error)) called from \(caller)")
146149
guard let error, !self.isAlreadyClosed else { return }
147150

148151
let nsError = error as NSError
@@ -169,8 +172,6 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
169172
do {
170173
let message = try await self.wsTask.receive()
171174
let meta = MessageMetadata(number: number)
172-
173-
self.logger.trace("WebSocketClient did receive message with number \(number) \(message.loggingDescription)")
174175
await self.events.send(.message(message, metadata: meta))
175176
Task { await self.readNextMessage(number + 1) }
176177
} catch {

0 commit comments

Comments
 (0)