Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Sources/GRPC/ClientCalls/BaseClientCall.swift
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ public class BaseClientCall<Request: Message, Response: Message>: ClientCall {
}
}

extension GRPCRequestHead {
extension _GRPCRequestHead {
init(
scheme: String,
path: String,
Expand All @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion Sources/GRPC/ClientCalls/BidirectionalStreamingCall.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
12 changes: 6 additions & 6 deletions Sources/GRPC/ClientCalls/ClientCall.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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()
}
Expand All @@ -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)
}
}
}
2 changes: 1 addition & 1 deletion Sources/GRPC/ClientCalls/ClientStreamingCall.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion Sources/GRPC/ClientCalls/ServerStreamingCall.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion Sources/GRPC/ClientCalls/UnaryCall.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion Sources/GRPC/GRPCClientResponseChannelHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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?

Expand Down
4 changes: 2 additions & 2 deletions Sources/GRPC/GRPCClientStateMachine.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down Expand Up @@ -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>

Expand Down
8 changes: 4 additions & 4 deletions Sources/GRPC/_ClientRequestChannelHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -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)
}
Expand Down
41 changes: 24 additions & 17 deletions Sources/GRPC/_GRPCClientChannelHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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>)
Expand All @@ -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,
Expand Down Expand Up @@ -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
}
Expand All @@ -81,7 +86,7 @@ public struct GRPCRequestHead {
}
}

public var scheme: String {
internal var scheme: String {
get {
return self._storage.scheme
}
Expand All @@ -93,7 +98,7 @@ public struct GRPCRequestHead {
}
}

public var path: String {
internal var path: String {
get {
return self._storage.path
}
Expand All @@ -105,7 +110,7 @@ public struct GRPCRequestHead {
}
}

public var host: String {
internal var host: String {
get {
return self._storage.host
}
Expand All @@ -117,7 +122,7 @@ public struct GRPCRequestHead {
}
}

public var timeout: GRPCTimeout {
internal var timeout: GRPCTimeout {
get {
return self._storage.timeout
}
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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>?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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",
Expand Down Expand Up @@ -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
}

Expand Down
4 changes: 2 additions & 2 deletions Tests/GRPCTests/GRPCStatusCodeTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,15 @@ class GRPCStatusCodeTests: GRPCTestCase {
}

func sendRequestHead() {
let requestHead = GRPCRequestHead(
let requestHead = _GRPCRequestHead(
method: "POST",
scheme: "http",
path: "/foo/bar",
host: "localhost",
timeout: .infinite,
customMetadata: [:]
)
let clientRequestHead: GRPCClientRequestPart<Echo_EchoRequest> = .head(requestHead)
let clientRequestHead: _GRPCClientRequestPart<Echo_EchoRequest> = .head(requestHead)
XCTAssertNoThrow(try self.channel.writeOutbound(clientRequestHead))
}

Expand Down
4 changes: 2 additions & 2 deletions Tests/GRPCTests/GRPCTypeSizeTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}