Skip to content

Commit 673462b

Browse files
committed
Simplify receive implementation for transports
1 parent 046fa3e commit 673462b

File tree

3 files changed

+7
-32
lines changed

3 files changed

+7
-32
lines changed

Sources/MCP/Base/Transports/HTTPClientTransport.swift

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,7 @@ public actor HTTPClientTransport: Actor, Transport {
148148

149149
/// Receives data in an async sequence
150150
public func receive() -> AsyncThrowingStream<Data, Swift.Error> {
151-
return AsyncThrowingStream { continuation in
152-
Task {
153-
for try await message in messageStream {
154-
continuation.yield(message)
155-
}
156-
continuation.finish()
157-
}
158-
}
151+
return messageStream
159152
}
160153

161154
// MARK: - SSE

Sources/MCP/Base/Transports/NetworkTransport.swift

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -159,18 +159,7 @@ import struct Foundation.Data
159159
}
160160

161161
public func receive() -> AsyncThrowingStream<Data, Swift.Error> {
162-
return AsyncThrowingStream { continuation in
163-
Task {
164-
do {
165-
for try await message in messageStream {
166-
continuation.yield(message)
167-
}
168-
continuation.finish()
169-
} catch {
170-
continuation.finish(throwing: error)
171-
}
172-
}
173-
}
162+
return messageStream
174163
}
175164

176165
private func receiveLoop() async {

Sources/MCP/Base/Transports/StdioTransport.swift

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ import struct Foundation.Data
2929
public nonisolated let logger: Logger
3030

3131
private var isConnected = false
32-
private let messageStream: AsyncStream<Data>
33-
private let messageContinuation: AsyncStream<Data>.Continuation
32+
private let messageStream: AsyncThrowingStream<Data, Swift.Error>
33+
private let messageContinuation: AsyncThrowingStream<Data, Swift.Error>.Continuation
3434

3535
public init(
3636
input: FileDescriptor = FileDescriptor.standardInput,
@@ -46,8 +46,8 @@ import struct Foundation.Data
4646
factory: { _ in SwiftLogNoOpLogHandler() })
4747

4848
// Create message stream
49-
var continuation: AsyncStream<Data>.Continuation!
50-
self.messageStream = AsyncStream { continuation = $0 }
49+
var continuation: AsyncThrowingStream<Data, Swift.Error>.Continuation!
50+
self.messageStream = AsyncThrowingStream { continuation = $0 }
5151
self.messageContinuation = continuation
5252
}
5353

@@ -177,14 +177,7 @@ import struct Foundation.Data
177177
/// or batches containing multiple requests/notifications encoded as JSON arrays.
178178
/// Each message is guaranteed to be a complete JSON object or array.
179179
public func receive() -> AsyncThrowingStream<Data, Swift.Error> {
180-
return AsyncThrowingStream { continuation in
181-
Task {
182-
for await message in messageStream {
183-
continuation.yield(message)
184-
}
185-
continuation.finish()
186-
}
187-
}
180+
return messageStream
188181
}
189182
}
190183
#endif

0 commit comments

Comments
 (0)