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
2 changes: 1 addition & 1 deletion async-grpc.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ Gem::Specification.new do |spec|

spec.add_dependency "async", ">= 2.38.0"
spec.add_dependency "async-http"
spec.add_dependency "protocol-grpc", "~> 0.12.0"
spec.add_dependency "protocol-grpc", "~> 0.13.0"
spec.add_dependency "protocol-http", "~> 0.60"
end
5 changes: 2 additions & 3 deletions lib/async/grpc/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
require "protocol/http"
require "protocol/grpc"
require "protocol/grpc/interface"
require "protocol/grpc/methods"
require "protocol/grpc/body/readable_body"
require "protocol/grpc/body/writable_body"
require "protocol/grpc/metadata"
Expand Down Expand Up @@ -123,7 +122,7 @@ def invoke(service, method, request = nil, metadata: {}, timeout: nil, encoding:
raise ArgumentError, "Unknown method: #{method}" unless rpc

path = service.path(method)
headers = Protocol::GRPC::Methods.build_headers(
headers = Protocol::GRPC::Metadata.build(
metadata: metadata,
timeout: timeout,
content_type: "application/grpc+proto"
Expand Down Expand Up @@ -328,7 +327,7 @@ def check_status!(response)
return if status == Protocol::GRPC::Status::OK

message = Protocol::GRPC::Metadata.extract_message(response.headers)
metadata = Protocol::GRPC::Methods.extract_metadata(response.headers)
metadata = Protocol::GRPC::Metadata.extract(response.headers)

remote_error = RemoteError.for(message, metadata)

Expand Down
8 changes: 4 additions & 4 deletions lib/async/grpc/dispatcher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
require_relative "error"

require "protocol/grpc/middleware"
require "protocol/grpc/methods"
require "protocol/grpc/call"
require "protocol/grpc/route"
require "protocol/grpc/body/readable_body"
require "protocol/grpc/body/writable_body"
require "protocol/grpc/metadata"
Expand Down Expand Up @@ -113,8 +113,8 @@ def dispatch_to_service(service, handler_method, input, output, call, parent: As
# @returns [Protocol::HTTP::Response] The HTTP response
# @raises [Protocol::GRPC::Error] If service or method is not found
def dispatch(request)
# Parse service and method from path:
service_name, method_name = Protocol::GRPC::Methods.parse_path(request.path)
# Extract the routing information from the request path:
service_name, method_name = Protocol::GRPC::Route.parse(request.path)

# Find service:
service = @services[service_name]
Expand Down Expand Up @@ -155,7 +155,7 @@ def dispatch(request)
# Create response object:
response = Protocol::HTTP::Response[200, response_headers, output]

# Create call context with request, response and deadline:
# Create the call context:
call = Protocol::GRPC::Call.for(request, response)

if rpc_descriptor.streaming?
Expand Down
2 changes: 1 addition & 1 deletion test/async/grpc/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
require "async/http/server"
require "async/http/client"
require "async/http/endpoint"
require "protocol/grpc/methods"
require "protocol/grpc/metadata"
require "protocol/grpc/body/readable_body"
require "sus/fixtures/async/http"
require "async/grpc/test_interface"
Expand Down
20 changes: 10 additions & 10 deletions test/async/grpc/dispatcher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
require "async/grpc/dispatcher"
require "async/grpc/service"
require "protocol/http"
require "protocol/grpc/methods"
require "protocol/grpc/route"
require "protocol/grpc/metadata"
require "protocol/grpc/body/writable_body"
require "async/grpc/test_interface"
Expand Down Expand Up @@ -44,8 +44,8 @@
end
end

let(:headers) {Protocol::GRPC::Methods.build_headers}
let(:path) {Protocol::GRPC::Methods.build_path(service_name, "UnaryCall")}
let(:headers) {Protocol::GRPC::Metadata.build}
let(:path) {Protocol::GRPC::Route.build(service_name, "UnaryCall")}
let(:request) {Protocol::HTTP::Request.new("http", "localhost", "POST", path, nil, headers, request_body)}

it "dispatches to registered service" do
Expand All @@ -62,7 +62,7 @@
end

it "handles CamelCase method names" do
path = Protocol::GRPC::Methods.build_path(service_name, "SayHello")
path = Protocol::GRPC::Route.build(service_name, "SayHello")
request = Protocol::HTTP::Request.new("http", "localhost", "POST", path, nil, headers, request_body)

response = dispatcher.call(request)
Expand All @@ -76,7 +76,7 @@
end

it "returns UNIMPLEMENTED for unknown service" do
path = Protocol::GRPC::Methods.build_path("unknown.Service", "UnaryCall")
path = Protocol::GRPC::Route.build("unknown.Service", "UnaryCall")
request = Protocol::HTTP::Request.new("http", "localhost", "POST", path, nil, headers, request_body)

response = dispatcher.call(request)
Expand All @@ -87,7 +87,7 @@
end

it "returns UNIMPLEMENTED for unknown method" do
path = Protocol::GRPC::Methods.build_path(service_name, "UnknownMethod")
path = Protocol::GRPC::Route.build(service_name, "UnknownMethod")
request = Protocol::HTTP::Request.new("http", "localhost", "POST", path, nil, headers, request_body)

response = dispatcher.call(request)
Expand All @@ -107,7 +107,7 @@
end

it "handles timeout correctly" do
path = Protocol::GRPC::Methods.build_path(service_name, "SlowCall")
path = Protocol::GRPC::Route.build(service_name, "SlowCall")
request = Protocol::HTTP::Request.new("http", "localhost", "POST", path, nil, headers, request_body)
request.headers["grpc-timeout"] = "100m" # 100 milliseconds

Expand Down Expand Up @@ -144,7 +144,7 @@
end

it "marks headers as trailers for server streaming response with data" do
path = Protocol::GRPC::Methods.build_path(service_name, "ServerStreamingCall")
path = Protocol::GRPC::Route.build(service_name, "ServerStreamingCall")
request = Protocol::HTTP::Request.new("http", "localhost", "POST", path, nil, headers, request_body)

response = dispatcher.call(request)
Expand Down Expand Up @@ -173,7 +173,7 @@
end.new(error_interface, error_service_name)
dispatcher = subject.new(services: {error_service_name => error_service})

path = Protocol::GRPC::Methods.build_path(error_service_name, "WriteThenError")
path = Protocol::GRPC::Route.build(error_service_name, "WriteThenError")
request = Protocol::HTTP::Request.new("http", "localhost", "POST", path, nil, headers, request_body)

response = dispatcher.call(request)
Expand Down Expand Up @@ -205,7 +205,7 @@
end.new(trailers_only_interface, trailers_only_service_name)
dispatcher = subject.new(services: {trailers_only_service_name => trailers_only_service})

path = Protocol::GRPC::Methods.build_path(trailers_only_service_name, "ErrorOnly")
path = Protocol::GRPC::Route.build(trailers_only_service_name, "ErrorOnly")
request = Protocol::HTTP::Request.new("http", "localhost", "POST", path, nil, headers, request_body)

response = dispatcher.call(request)
Expand Down
Loading