async-grpc 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/context/getting-started.md +6 -6
- data/lib/async/grpc/{dispatcher_middleware.rb → dispatcher.rb} +12 -11
- data/lib/async/grpc/service.rb +3 -3
- data/lib/async/grpc/version.rb +1 -1
- data/lib/async/grpc.rb +1 -1
- data/readme.md +6 -1
- data/releases.md +5 -0
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 33e1af099cdab3092bc722b175b4dc16cc4fdacbbe7c59c12d1f186cfec95b0b
|
|
4
|
+
data.tar.gz: 70c6f471fde84394a3a6aa5cb014d98a16be1746c132b0e932f516a6c175f8f3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a243cbd19d766995b1e63037f21357d97ff3878cd8020227df2652cd11be2bbbb367f753d8182ee319a0e47e7ecddc335ce38b4dca03209873ae869aee150acc
|
|
7
|
+
data.tar.gz: 9096b9bccc77a7860f164325dadc427c0e4ebc8ce4f9ff1411f87e3ccaa9c094c2502075b83ba21c5c9e458ac10e90034198e85d6f41d1d26f2b6e436010cc9b
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/context/getting-started.md
CHANGED
|
@@ -23,7 +23,7 @@ $ bundle add protocol-grpc async-http
|
|
|
23
23
|
- {ruby Async::GRPC::Client} - An asynchronous gRPC client that wraps `Async::HTTP::Client`.
|
|
24
24
|
- {ruby Async::GRPC::Stub} - A method-based stub for making RPC calls.
|
|
25
25
|
- {ruby Async::GRPC::Service} - A concrete service implementation that uses a `Protocol::GRPC::Interface`.
|
|
26
|
-
- {ruby Async::GRPC::
|
|
26
|
+
- {ruby Async::GRPC::Dispatcher} - Middleware that routes requests to registered services.
|
|
27
27
|
|
|
28
28
|
## Client Usage
|
|
29
29
|
|
|
@@ -104,12 +104,12 @@ end
|
|
|
104
104
|
### Registering Services
|
|
105
105
|
|
|
106
106
|
``` ruby
|
|
107
|
-
require "async/grpc/
|
|
107
|
+
require "async/grpc/dispatcher"
|
|
108
108
|
|
|
109
|
-
dispatcher = Async::GRPC::
|
|
109
|
+
dispatcher = Async::GRPC::Dispatcher.new
|
|
110
110
|
|
|
111
111
|
service = GreeterService.new(GreeterInterface, "hello.Greeter")
|
|
112
|
-
dispatcher.register(
|
|
112
|
+
dispatcher.register(service)
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
### Running a Server
|
|
@@ -151,8 +151,8 @@ end
|
|
|
151
151
|
Async do
|
|
152
152
|
# Setup server
|
|
153
153
|
endpoint = Async::HTTP::Endpoint.parse("http://localhost:50051")
|
|
154
|
-
dispatcher = Async::GRPC::
|
|
155
|
-
dispatcher.register(
|
|
154
|
+
dispatcher = Async::GRPC::Dispatcher.new
|
|
155
|
+
dispatcher.register(GreeterService.new(GreeterInterface, "hello.Greeter"))
|
|
156
156
|
server = Async::HTTP::Server.for(endpoint, dispatcher)
|
|
157
157
|
|
|
158
158
|
# Setup client
|
|
@@ -17,16 +17,16 @@ require "protocol/grpc/status"
|
|
|
17
17
|
|
|
18
18
|
module Async
|
|
19
19
|
module GRPC
|
|
20
|
-
#
|
|
20
|
+
# Dispatches gRPC requests to registered services.
|
|
21
21
|
# Handles routing based on service name from the request path.
|
|
22
22
|
#
|
|
23
23
|
# @example Registering services:
|
|
24
|
-
# dispatcher =
|
|
25
|
-
# dispatcher.register(
|
|
26
|
-
# dispatcher.register(
|
|
24
|
+
# dispatcher = Dispatcher.new
|
|
25
|
+
# dispatcher.register(GreeterService.new(GreeterInterface, "hello.Greeter"))
|
|
26
|
+
# dispatcher.register(WorldService.new(WorldInterface, "world.Greeter"))
|
|
27
27
|
#
|
|
28
28
|
# server = Async::HTTP::Server.for(endpoint, dispatcher)
|
|
29
|
-
class
|
|
29
|
+
class Dispatcher < Protocol::GRPC::Middleware
|
|
30
30
|
# Initialize the dispatcher.
|
|
31
31
|
# @parameter app [#call | Nil] The next middleware in the chain
|
|
32
32
|
# @parameter services [Hash] Optional initial services hash (service_name => service_instance)
|
|
@@ -35,12 +35,12 @@ module Async
|
|
|
35
35
|
@services = services
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
# Register a service.
|
|
39
|
+
# @parameter service [Async::GRPC::Service] Service instance
|
|
40
|
+
# @parameter name [String] Service name (defaults to service.service_name)
|
|
41
|
+
def register(service, name: service.service_name)
|
|
42
|
+
@services[name] = service
|
|
43
|
+
end
|
|
44
44
|
|
|
45
45
|
protected
|
|
46
46
|
|
|
@@ -146,3 +146,4 @@ module Async
|
|
|
146
146
|
end
|
|
147
147
|
end
|
|
148
148
|
end
|
|
149
|
+
|
data/lib/async/grpc/service.rb
CHANGED
|
@@ -9,7 +9,7 @@ module Async
|
|
|
9
9
|
module GRPC
|
|
10
10
|
# Represents a concrete service implementation that uses an Interface.
|
|
11
11
|
# Subclass this and implement the RPC methods defined in the interface.
|
|
12
|
-
# Services are registered with
|
|
12
|
+
# Services are registered with Dispatcher for routing.
|
|
13
13
|
#
|
|
14
14
|
# @example Example service implementation:
|
|
15
15
|
# class GreeterInterface < Protocol::GRPC::Interface
|
|
@@ -32,8 +32,8 @@ module Async
|
|
|
32
32
|
# end
|
|
33
33
|
#
|
|
34
34
|
# # Register with dispatcher:
|
|
35
|
-
# dispatcher =
|
|
36
|
-
# dispatcher.register(
|
|
35
|
+
# dispatcher = Dispatcher.new
|
|
36
|
+
# dispatcher.register(GreeterService.new(GreeterInterface, "hello.Greeter"))
|
|
37
37
|
# server = Async::HTTP::Server.for(endpoint, dispatcher)
|
|
38
38
|
class Service
|
|
39
39
|
# Initialize a new service instance.
|
data/lib/async/grpc/version.rb
CHANGED
data/lib/async/grpc.rb
CHANGED
data/readme.md
CHANGED
|
@@ -10,7 +10,7 @@ Asynchronous gRPC client and server implementation built on top of `protocol-grp
|
|
|
10
10
|
|
|
11
11
|
- **Asynchronous client** - Wraps `Async::HTTP::Client` to provide gRPC-specific call methods with automatic message framing and status handling.
|
|
12
12
|
- **Method-based stubs** - Create type-safe stubs from `Protocol::GRPC::Interface` definitions. Accepts both PascalCase and snake\_case method names for convenience.
|
|
13
|
-
- **Server middleware** - `
|
|
13
|
+
- **Server middleware** - `Dispatcher` routes requests to registered services based on path.
|
|
14
14
|
- **All RPC patterns** - Supports unary, server streaming, client streaming, and bidirectional streaming RPCs.
|
|
15
15
|
- **HTTP/1 and HTTP/2 transport** - Built on `async-http` with automatic HTTP/2 multiplexing and connection pooling.
|
|
16
16
|
|
|
@@ -24,6 +24,11 @@ Please see the [project documentation](https://socketry.github.io/async-grpc/) f
|
|
|
24
24
|
|
|
25
25
|
Please see the [project releases](https://socketry.github.io/async-grpc/releases/index) for all releases.
|
|
26
26
|
|
|
27
|
+
### v0.3.0
|
|
28
|
+
|
|
29
|
+
- **Breaking**: Renamed `DispatcherMiddleware` to `Dispatcher` for cleaner API.
|
|
30
|
+
- **Breaking**: Simplified `Dispatcher#register` API to `register(service, name: service.service_name)`, eliminating redundant service name specification.
|
|
31
|
+
|
|
27
32
|
### v0.2.0
|
|
28
33
|
|
|
29
34
|
- Added `Async::GRPC::RemoteError` class to encapsulate remote error details including message and backtrace extracted from response headers.
|
data/releases.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Releases
|
|
2
2
|
|
|
3
|
+
## v0.3.0
|
|
4
|
+
|
|
5
|
+
- **Breaking**: Renamed `DispatcherMiddleware` to `Dispatcher` for cleaner API.
|
|
6
|
+
- **Breaking**: Simplified `Dispatcher#register` API to `register(service, name: service.service_name)`, eliminating redundant service name specification.
|
|
7
|
+
|
|
3
8
|
## v0.2.0
|
|
4
9
|
|
|
5
10
|
- Added `Async::GRPC::RemoteError` class to encapsulate remote error details including message and backtrace extracted from response headers.
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: async-grpc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Samuel Williams
|
|
@@ -76,7 +76,7 @@ files:
|
|
|
76
76
|
- design.md
|
|
77
77
|
- lib/async/grpc.rb
|
|
78
78
|
- lib/async/grpc/client.rb
|
|
79
|
-
- lib/async/grpc/
|
|
79
|
+
- lib/async/grpc/dispatcher.rb
|
|
80
80
|
- lib/async/grpc/remote_error.rb
|
|
81
81
|
- lib/async/grpc/service.rb
|
|
82
82
|
- lib/async/grpc/stub.rb
|
metadata.gz.sig
CHANGED
|
Binary file
|