Prechádzať zdrojové kódy

Make client request/response parts internal (#671)

George Barnett 6 rokov pred
rodič
commit
8d43a7efb8

+ 2 - 2
Sources/GRPC/ClientCalls/BaseClientCall.swift

@@ -129,7 +129,7 @@ public class BaseClientCall<Request: Message, Response: Message>: ClientCall {
   }
 }
 
-extension GRPCRequestHead {
+extension _GRPCRequestHead {
   init(
     scheme: String,
     path: String,
@@ -142,7 +142,7 @@ extension GRPCRequestHead {
       customMetadata.add(name: requestIDHeader, value: requestID)
     }
 
-    self = GRPCRequestHead(
+    self = _GRPCRequestHead(
       method: options.cacheable ? "GET" : "POST",
       scheme: scheme,
       path: path,

+ 1 - 1
Sources/GRPC/ClientCalls/BidirectionalStreamingCall.swift

@@ -55,7 +55,7 @@ public final class BidirectionalStreamingCall<RequestMessage: Message, ResponseM
       responseHandler: handler
     )
 
-    let requestHead = GRPCRequestHead(
+    let requestHead = _GRPCRequestHead(
       scheme: connection.configuration.httpProtocol.scheme,
       path: path,
       host: connection.configuration.target.host,

+ 6 - 6
Sources/GRPC/ClientCalls/ClientCall.swift

@@ -129,20 +129,20 @@ public protocol UnaryResponseClientCall: ClientCall {
 extension StreamingRequestClientCall {
   public func sendMessage(_ message: RequestMessage) -> EventLoopFuture<Void> {
     return self.subchannel.flatMap { channel in
-      return channel.writeAndFlush(GRPCClientRequestPart.message(.init(message)))
+      return channel.writeAndFlush(_GRPCClientRequestPart.message(.init(message)))
     }
   }
 
   public func sendMessage(_ message: RequestMessage, promise: EventLoopPromise<Void>?) {
     self.subchannel.whenSuccess { channel in
-      channel.writeAndFlush(GRPCClientRequestPart.message(.init(message)), promise: promise)
+      channel.writeAndFlush(_GRPCClientRequestPart.message(.init(message)), promise: promise)
     }
   }
 
   public func sendMessages<S: Sequence>(_ messages: S) -> EventLoopFuture<Void> where S.Element == RequestMessage {
     return self.subchannel.flatMap { channel -> EventLoopFuture<Void> in
       let writeFutures = messages.map { message in
-        channel.write(GRPCClientRequestPart.message(.init(message)))
+        channel.write(_GRPCClientRequestPart.message(.init(message)))
       }
       channel.flush()
       return EventLoopFuture.andAllSucceed(writeFutures, on: channel.eventLoop)
@@ -155,7 +155,7 @@ extension StreamingRequestClientCall {
     } else {
       self.subchannel.whenSuccess { channel in
         for message in messages {
-          channel.write(GRPCClientRequestPart.message(.init(message)), promise: nil)
+          channel.write(_GRPCClientRequestPart.message(.init(message)), promise: nil)
         }
         channel.flush()
       }
@@ -164,13 +164,13 @@ extension StreamingRequestClientCall {
 
   public func sendEnd() -> EventLoopFuture<Void> {
     return self.subchannel.flatMap { channel in
-      return channel.writeAndFlush(GRPCClientRequestPart<RequestMessage>.end)
+      return channel.writeAndFlush(_GRPCClientRequestPart<RequestMessage>.end)
     }
   }
 
   public func sendEnd(promise: EventLoopPromise<Void>?) {
     self.subchannel.whenSuccess { channel in
-      channel.writeAndFlush(GRPCClientRequestPart<RequestMessage>.end, promise: promise)
+      channel.writeAndFlush(_GRPCClientRequestPart<RequestMessage>.end, promise: promise)
     }
   }
 }

+ 1 - 1
Sources/GRPC/ClientCalls/ClientStreamingCall.swift

@@ -59,7 +59,7 @@ public final class ClientStreamingCall<RequestMessage: Message, ResponseMessage:
       logger: logger
     )
 
-    let requestHead = GRPCRequestHead(
+    let requestHead = _GRPCRequestHead(
       scheme: connection.configuration.httpProtocol.scheme,
       path: path,
       host: connection.configuration.target.host,

+ 1 - 1
Sources/GRPC/ClientCalls/ServerStreamingCall.swift

@@ -47,7 +47,7 @@ public final class ServerStreamingCall<RequestMessage: Message, ResponseMessage:
       responseHandler: handler
     )
 
-    let requestHead = GRPCRequestHead(
+    let requestHead = _GRPCRequestHead(
       scheme: connection.configuration.httpProtocol.scheme,
       path: path,
       host: connection.configuration.target.host,

+ 1 - 1
Sources/GRPC/ClientCalls/UnaryCall.swift

@@ -56,7 +56,7 @@ public final class UnaryCall<RequestMessage: Message, ResponseMessage: Message>
       logger: logger
     )
 
-    let requestHead = GRPCRequestHead(
+    let requestHead = _GRPCRequestHead(
       scheme: connection.configuration.httpProtocol.scheme,
       path: path,
       host: connection.configuration.target.host,

+ 1 - 1
Sources/GRPC/GRPCClientResponseChannelHandler.swift

@@ -25,7 +25,7 @@ import Logging
 /// is also responsible for error handling, via an error delegate and by appropriately failing the
 /// aforementioned promises.
 internal class GRPCClientResponseChannelHandler<ResponseMessage: Message>: ChannelInboundHandler {
-  public typealias InboundIn = GRPCClientResponsePart<ResponseMessage>
+  public typealias InboundIn = _GRPCClientResponsePart<ResponseMessage>
   internal let logger: Logger
   internal var stopwatch: Stopwatch?
 

+ 2 - 2
Sources/GRPC/GRPCClientStateMachine.swift

@@ -188,7 +188,7 @@ struct GRPCClientStateMachine<Request: Message, Response: Message> {
   ///
   /// - Parameter requestHead: The client request head for the RPC.
   mutating func sendRequestHeaders(
-    requestHead: GRPCRequestHead
+    requestHead: _GRPCRequestHead
   ) -> Result<HPACKHeaders, SendRequestHeadersError> {
     return self.state.sendRequestHeaders(requestHead: requestHead)
   }
@@ -325,7 +325,7 @@ struct GRPCClientStateMachine<Request: Message, Response: Message> {
 extension GRPCClientStateMachine.State {
   /// See `GRPCClientStateMachine.sendRequestHeaders(requestHead:)`.
   mutating func sendRequestHeaders(
-    requestHead: GRPCRequestHead
+    requestHead: _GRPCRequestHead
   ) -> Result<HPACKHeaders, SendRequestHeadersError> {
     let result: Result<HPACKHeaders, SendRequestHeadersError>
 

+ 4 - 4
Sources/GRPC/_ClientRequestChannelHandler.swift

@@ -23,12 +23,12 @@ import NIOHTTP1
 /// - Important: This is **NOT** part of the public API.
 public class _ClientRequestChannelHandler<RequestMessage: Message>: ChannelInboundHandler {
   public typealias InboundIn = Never
-  public typealias OutboundOut = GRPCClientRequestPart<RequestMessage>
+  public typealias OutboundOut = _GRPCClientRequestPart<RequestMessage>
 
   /// The request head to send.
-  internal let requestHead: GRPCRequestHead
+  internal let requestHead: _GRPCRequestHead
 
-  init(requestHead: GRPCRequestHead) {
+  init(requestHead: _GRPCRequestHead) {
     self.requestHead = requestHead
   }
 
@@ -47,7 +47,7 @@ public final class _UnaryRequestChannelHandler<RequestMessage: Message>: _Client
   /// The request to send.
   internal let request: _Box<RequestMessage>
 
-  public init(requestHead: GRPCRequestHead, request: _Box<RequestMessage>) {
+  public init(requestHead: _GRPCRequestHead, request: _Box<RequestMessage>) {
     self.request = request
     super.init(requestHead: requestHead)
   }

+ 24 - 17
Sources/GRPC/_GRPCClientChannelHandler.swift

@@ -21,9 +21,12 @@ import SwiftProtobuf
 import Logging
 
 /// A gRPC client request message part.
-public enum GRPCClientRequestPart<Request: Message> {
+///
+/// - Important: This is **NOT** part of the public API. It is declared as
+///   `public` because it is used within performance tests.
+public enum _GRPCClientRequestPart<Request: Message> {
   /// The 'head' of the request, that is, information about the initiation of the RPC.
-  case head(GRPCRequestHead)
+  case head(_GRPCRequestHead)
 
   /// A deserialized request message to send to the server.
   case message(_Box<Request>)
@@ -32,13 +35,15 @@ public enum GRPCClientRequestPart<Request: Message> {
   case end
 }
 
-public struct GRPCRequestHead {
+/// - Important: This is **NOT** part of the public API. It is declared as
+///   `public` because it is used within performance tests.
+public struct _GRPCRequestHead {
   private final class _Storage {
-    public var method: String
-    public var scheme: String
-    public var path: String
-    public var host: String
-    public var timeout: GRPCTimeout
+    var method: String
+    var scheme: String
+    var path: String
+    var host: String
+    var timeout: GRPCTimeout
 
     init(
       method: String,
@@ -67,9 +72,9 @@ public struct GRPCRequestHead {
 
   private var _storage: _Storage
   // Don't put this in storage: it would CoW for every mutation.
-  public var customMetadata: HPACKHeaders
+  internal var customMetadata: HPACKHeaders
 
-  public var method: String {
+  internal var method: String {
     get {
       return self._storage.method
     }
@@ -81,7 +86,7 @@ public struct GRPCRequestHead {
     }
   }
 
-  public var scheme: String {
+  internal var scheme: String {
     get {
       return self._storage.scheme
     }
@@ -93,7 +98,7 @@ public struct GRPCRequestHead {
     }
   }
 
-  public var path: String {
+  internal var path: String {
     get {
       return self._storage.path
     }
@@ -105,7 +110,7 @@ public struct GRPCRequestHead {
     }
   }
 
-  public var host: String {
+  internal var host: String {
     get {
       return self._storage.host
     }
@@ -117,7 +122,7 @@ public struct GRPCRequestHead {
     }
   }
 
-  public var timeout: GRPCTimeout {
+  internal var timeout: GRPCTimeout {
     get {
       return self._storage.timeout
     }
@@ -149,7 +154,9 @@ public struct GRPCRequestHead {
 }
 
 /// A gRPC client response message part.
-public enum GRPCClientResponsePart<Response: Message> {
+///
+/// - Important: This is **NOT** part of the public API.
+public enum _GRPCClientResponsePart<Response: Message> {
   /// Metadata received as the server acknowledges the RPC.
   case initialMetadata(HPACKHeaders)
 
@@ -237,7 +244,7 @@ public final class _GRPCClientChannelHandler<Request: Message, Response: Message
 // MARK: - GRPCClientChannelHandler: Inbound
 extension _GRPCClientChannelHandler: ChannelInboundHandler {
   public typealias InboundIn = HTTP2Frame
-  public typealias InboundOut = GRPCClientResponsePart<Response>
+  public typealias InboundOut = _GRPCClientResponsePart<Response>
 
   public func channelRead(context: ChannelHandlerContext, data: NIOAny) {
     let frame = self.unwrapInboundIn(data)
@@ -370,7 +377,7 @@ extension _GRPCClientChannelHandler: ChannelInboundHandler {
 
 // MARK: - GRPCClientChannelHandler: Outbound
 extension _GRPCClientChannelHandler: ChannelOutboundHandler {
-  public typealias OutboundIn = GRPCClientRequestPart<Request>
+  public typealias OutboundIn = _GRPCClientRequestPart<Request>
   public typealias OutboundOut = HTTP2Frame
 
   public func write(context: ChannelHandlerContext, data: NIOAny, promise: EventLoopPromise<Void>?) {

+ 3 - 3
Sources/GRPCPerformanceTests/Benchmarks/EmbeddedClientThroughput.swift

@@ -29,7 +29,7 @@ class EmbeddedClientThroughput: Benchmark {
   private let requestText: String
 
   private var logger: Logger!
-  private var requestHead: GRPCRequestHead!
+  private var requestHead: _GRPCRequestHead!
   private var request: Echo_EchoRequest!
 
   init(requests: Int, text: String) {
@@ -40,7 +40,7 @@ class EmbeddedClientThroughput: Benchmark {
   func setUp() throws {
     self.logger = Logger(label: "io.grpc.testing")
 
-    self.requestHead = GRPCRequestHead(
+    self.requestHead = _GRPCRequestHead(
       method: "POST",
       scheme: "http",
       path: "/echo.Echo/Get",
@@ -106,7 +106,7 @@ class EmbeddedClientThroughput: Benchmark {
 
       // And read them back out.
       var responseParts = 0
-      while let _ = try channel.readOutbound(as: GRPCClientResponsePart<Echo_EchoResponse>.self) {
+      while let _ = try channel.readOutbound(as: _GRPCClientResponsePart<Echo_EchoResponse>.self) {
         responseParts += 1
       }
 

+ 2 - 2
Tests/GRPCTests/GRPCStatusCodeTests.swift

@@ -59,7 +59,7 @@ class GRPCStatusCodeTests: GRPCTestCase {
   }
 
   func sendRequestHead() {
-    let requestHead = GRPCRequestHead(
+    let requestHead = _GRPCRequestHead(
       method: "POST",
       scheme: "http",
       path: "/foo/bar",
@@ -67,7 +67,7 @@ class GRPCStatusCodeTests: GRPCTestCase {
       timeout: .infinite,
       customMetadata: [:]
     )
-    let clientRequestHead: GRPCClientRequestPart<Echo_EchoRequest> = .head(requestHead)
+    let clientRequestHead: _GRPCClientRequestPart<Echo_EchoRequest> = .head(requestHead)
     XCTAssertNoThrow(try self.channel.writeOutbound(clientRequestHead))
   }
 

+ 2 - 2
Tests/GRPCTests/GRPCTypeSizeTests.swift

@@ -40,10 +40,10 @@ class GRPCTypeSizeTests: GRPCTestCase {
   }
 
   func testGRPCClientRequestPart() {
-    self.checkSize(of: GRPCClientRequestPart<Echo_EchoRequest>.self)
+    self.checkSize(of: _GRPCClientRequestPart<Echo_EchoRequest>.self)
   }
 
   func testGRPCClientResponsePart() {
-    self.checkSize(of: GRPCClientResponsePart<Echo_EchoResponse>.self)
+    self.checkSize(of: _GRPCClientResponsePart<Echo_EchoResponse>.self)
   }
 }