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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc699a3d9a47acc1b8bdb7196b0da1280847caa14d5405e0150e8608cd701501
4
- data.tar.gz: 3884004454f86b2a7cd7c1ad460c00f6c820edae6b0bccc7a87d177a0cccee72
3
+ metadata.gz: 33e1af099cdab3092bc722b175b4dc16cc4fdacbbe7c59c12d1f186cfec95b0b
4
+ data.tar.gz: 70c6f471fde84394a3a6aa5cb014d98a16be1746c132b0e932f516a6c175f8f3
5
5
  SHA512:
6
- metadata.gz: 6d487819bdab689d575b8985e84b81d1ad1293126f9a7f64d697853cf723a4cdf67bb607f0e20faa0f1e547baf0eea6d9dc102da576b450bcba5e42f72ad2e95
7
- data.tar.gz: 9f2bf511ff8fc16db342add52bedbfbf1c924c6109346e9d3e877abb2e2ff6f03f40c50ef9a46406df2895b22b6a32845a22a7d444617ed65bc11ab4ee82ae52
6
+ metadata.gz: a243cbd19d766995b1e63037f21357d97ff3878cd8020227df2652cd11be2bbbb367f753d8182ee319a0e47e7ecddc335ce38b4dca03209873ae869aee150acc
7
+ data.tar.gz: 9096b9bccc77a7860f164325dadc427c0e4ebc8ce4f9ff1411f87e3ccaa9c094c2502075b83ba21c5c9e458ac10e90034198e85d6f41d1d26f2b6e436010cc9b
checksums.yaml.gz.sig CHANGED
Binary file
@@ -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::DispatcherMiddleware} - Middleware that routes requests to registered services.
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/dispatcher_middleware"
107
+ require "async/grpc/dispatcher"
108
108
 
109
- dispatcher = Async::GRPC::DispatcherMiddleware.new
109
+ dispatcher = Async::GRPC::Dispatcher.new
110
110
 
111
111
  service = GreeterService.new(GreeterInterface, "hello.Greeter")
112
- dispatcher.register("hello.Greeter", service)
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::DispatcherMiddleware.new
155
- dispatcher.register("hello.Greeter", GreeterService.new(GreeterInterface, "hello.Greeter"))
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
- # Represents middleware that dispatches gRPC requests to registered services.
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 = DispatcherMiddleware.new
25
- # dispatcher.register("hello.Greeter", GreeterService.new(GreeterInterface, "hello.Greeter"))
26
- # dispatcher.register("world.Greeter", WorldService.new(WorldInterface, "world.Greeter"))
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 DispatcherMiddleware < Protocol::GRPC::Middleware
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
- # Register a service.
39
- # @parameter service_name [String] Service name (e.g., "hello.Greeter")
40
- # @parameter service [Async::GRPC::Service] Service instance
41
- def register(service_name, service)
42
- @services[service_name] = service
43
- end
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
+
@@ -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 DispatcherMiddleware for routing.
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 = DispatcherMiddleware.new
36
- # dispatcher.register("hello.Greeter", GreeterService.new(GreeterInterface, "hello.Greeter"))
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.
@@ -7,7 +7,7 @@
7
7
  module Async
8
8
  # @namespace
9
9
  module GRPC
10
- VERSION = "0.2.0"
10
+ VERSION = "0.3.0"
11
11
  end
12
12
  end
13
13
 
data/lib/async/grpc.rb CHANGED
@@ -7,7 +7,7 @@ require_relative "grpc/version"
7
7
  require_relative "grpc/client"
8
8
  require_relative "grpc/service"
9
9
  require_relative "grpc/stub"
10
- require_relative "grpc/dispatcher_middleware"
10
+ require_relative "grpc/dispatcher"
11
11
 
12
12
  module Async
13
13
  module GRPC
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** - `DispatcherMiddleware` routes requests to registered services based on path.
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.2.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/dispatcher_middleware.rb
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