Skip to content

Commit 7ca6a4b

Browse files
committed
PR changes
1 parent e7068d2 commit 7ca6a4b

File tree

4 files changed

+32
-32
lines changed

4 files changed

+32
-32
lines changed

Sources/GRPCNIOTransportCore/Client/Connection/Connection.swift

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,10 @@ package final class Connection: Sendable {
202202
descriptor: MethodDescriptor,
203203
options: CallOptions
204204
) async throws -> Stream {
205-
let (multiplexer, scheme) = try self.state.withLock { state in
205+
let (multiplexer, scheme, remotePeer, localPeer) = try self.state.withLock { state in
206206
switch state {
207207
case .connected(let connected):
208-
return (connected.multiplexer, connected.scheme)
208+
return (connected.multiplexer, connected.scheme, connected.remotePeer, connected.localPeer)
209209
case .notConnected, .closing, .closed:
210210
throw RPCError(code: .unavailable, message: "subchannel isn't ready")
211211
}
@@ -246,7 +246,13 @@ package final class Connection: Sendable {
246246
}
247247
}
248248

249-
return Stream(wrapping: stream, descriptor: descriptor)
249+
let context = ClientContext(
250+
descriptor: descriptor,
251+
remotePeer: remotePeer,
252+
localPeer: localPeer
253+
)
254+
255+
return Stream(wrapping: stream, context: context)
250256
} catch {
251257
throw RPCError(code: .unavailable, message: "subchannel is unavailable", cause: error)
252258
}
@@ -417,24 +423,16 @@ extension Connection {
417423
}
418424
}
419425

420-
let descriptor: MethodDescriptor
426+
let context: ClientContext
421427

422428
private let http2Stream: NIOAsyncChannel<RPCResponsePart, RPCRequestPart>
423429

424-
var peerInfo: String {
425-
self.http2Stream.channel.getRemoteAddressInfo()
426-
}
427-
428-
var localInfo: String {
429-
self.http2Stream.channel.getLocalAddressInfo()
430-
}
431-
432430
init(
433431
wrapping stream: NIOAsyncChannel<RPCResponsePart, RPCRequestPart>,
434-
descriptor: MethodDescriptor
432+
context: ClientContext
435433
) {
436434
self.http2Stream = stream
437-
self.descriptor = descriptor
435+
self.context = context
438436
}
439437

440438
package func execute<T>(
@@ -465,13 +463,19 @@ extension Connection {
465463
struct Connected: Sendable {
466464
/// The connection channel.
467465
var channel: NIOAsyncChannel<ClientConnectionEvent, Void>
466+
/// The connection's remote peer information.
467+
var remotePeer: String
468+
/// The connection's local peer information.
469+
var localPeer: String
468470
/// Multiplexer for creating HTTP/2 streams.
469471
var multiplexer: NIOHTTP2Handler.AsyncStreamMultiplexer<Void>
470472
/// Whether the connection is plaintext, `false` implies TLS is being used.
471473
var scheme: Scheme
472474

473475
init(_ connection: HTTP2Connection) {
474476
self.channel = connection.channel
477+
self.remotePeer = connection.channel.remoteAddressInfo
478+
self.localPeer = connection.channel.localAddressInfo
475479
self.multiplexer = connection.multiplexer
476480
self.scheme = connection.isPlaintext ? .http : .https
477481
}

Sources/GRPCNIOTransportCore/Client/Connection/GRPCChannel.swift

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,10 @@ package final class GRPCChannel: ClientTransport {
202202
package func withStream<T: Sendable>(
203203
descriptor: MethodDescriptor,
204204
options: CallOptions,
205-
_ closure: (_ stream: RPCStream<Inbound, Outbound>, _ context: ClientContext) async throws -> T
205+
_ closure: (
206+
_ stream: RPCStream<ClientTransport.Inbound, ClientTransport.Outbound>,
207+
_ context: ClientContext
208+
) async throws -> T
206209
) async throws -> T {
207210
// Merge options from the call with those from the service config.
208211
let methodConfig = self.config(forMethod: descriptor)
@@ -214,18 +217,11 @@ package final class GRPCChannel: ClientTransport {
214217
case .created(let stream):
215218
return try await stream.execute { inbound, outbound in
216219
let rpcStream = RPCStream(
217-
descriptor: stream.descriptor,
220+
descriptor: stream.context.descriptor,
218221
inbound: RPCAsyncSequence<RPCResponsePart, any Error>(wrapping: inbound),
219222
outbound: RPCWriter.Closable(wrapping: outbound)
220223
)
221-
let context = ClientContext(
222-
descriptor: descriptor,
223-
remotePeer: stream.peerInfo,
224-
localPeer: stream.localInfo,
225-
serverHostname: self.authority ?? "<unknown>",
226-
networkTransportMethod: "tcp"
227-
)
228-
return try await closure(rpcStream, context)
224+
return try await closure(rpcStream, stream.context)
229225
}
230226

231227
case .tryAgain(let error):

Sources/GRPCNIOTransportCore/Internal/Channel+AddressInfo.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
* limitations under the License.
1515
*/
1616

17-
import NIOCore
17+
internal import NIOCore
1818

19-
extension Channel {
20-
func getRemoteAddressInfo() -> String {
21-
guard let remote = self.remoteAddress else {
19+
extension NIOAsyncChannel {
20+
var remoteAddressInfo: String {
21+
guard let remote = self.channel.remoteAddress else {
2222
return "<unknown>"
2323
}
2424

@@ -33,7 +33,7 @@ extension Channel {
3333

3434
case .unixDomainSocket:
3535
// The pathname will be on the local address.
36-
guard let local = self.localAddress else {
36+
guard let local = self.channel.localAddress else {
3737
// UDS but no local address; this shouldn't ever happen but at least note the transport
3838
// as being UDS.
3939
return "unix:<unknown>"
@@ -51,8 +51,8 @@ extension Channel {
5151
}
5252
}
5353

54-
func getLocalAddressInfo() -> String {
55-
guard let local = self.localAddress else {
54+
var localAddressInfo: String {
55+
guard let local = self.channel.localAddress else {
5656
return "<unknown>"
5757
}
5858

Sources/GRPCNIOTransportCore/Server/CommonHTTP2ServerTransport.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ package final class CommonHTTP2ServerTransport<
199199
_ context: ServerContext
200200
) async -> Void
201201
) async throws {
202-
let peer = connection.channel.getRemoteAddressInfo()
202+
let peer = connection.remoteAddressInfo
203203
try await connection.executeThenClose { inbound, _ in
204204
await withDiscardingTaskGroup { group in
205205
group.addTask {

0 commit comments

Comments
 (0)