grpc_kit 0.1.3 → 0.1.4
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
- data/.travis.yml +0 -1
- data/TODO.md +1 -1
- data/examples/helloworld_client.rb +5 -1
- data/examples/routeguide_client.rb +5 -2
- data/lib/grpc_kit/calls/client_client_streamer.rb +29 -0
- data/lib/grpc_kit/calls/client_request_response.rb +25 -0
- data/lib/grpc_kit/calls/client_server_streamer.rb +29 -0
- data/lib/grpc_kit/calls/server_client_streamer.rb +32 -0
- data/lib/grpc_kit/calls/server_request_response.rb +32 -0
- data/lib/grpc_kit/calls/server_server_streamer.rb +32 -0
- data/lib/grpc_kit/calls.rb +39 -0
- data/lib/grpc_kit/client.rb +17 -17
- data/lib/grpc_kit/grpc_time.rb +100 -0
- data/lib/grpc_kit/interceptors/client_client_streamer.rb +19 -0
- data/lib/grpc_kit/interceptors/client_request_response.rb +39 -0
- data/lib/grpc_kit/interceptors/client_server_streamer.rb +19 -0
- data/lib/grpc_kit/interceptors/server_client_streamer.rb +15 -0
- data/lib/grpc_kit/interceptors/server_request_response.rb +36 -0
- data/lib/grpc_kit/interceptors/server_server_streamer.rb +17 -0
- data/lib/grpc_kit/interceptors.rb +64 -5
- data/lib/grpc_kit/rpc_desc.rb +18 -2
- data/lib/grpc_kit/rpcs/client_bidi_streamer.rb +11 -0
- data/lib/grpc_kit/rpcs/client_client_streamer.rb +23 -0
- data/lib/grpc_kit/rpcs/client_request_response.rb +31 -0
- data/lib/grpc_kit/rpcs/client_server_streamer.rb +19 -0
- data/lib/grpc_kit/rpcs/server_bidi_streamer.rb +10 -0
- data/lib/grpc_kit/rpcs/server_client_streamer.rb +24 -0
- data/lib/grpc_kit/rpcs/server_request_response.rb +26 -0
- data/lib/grpc_kit/rpcs/server_server_streamer.rb +26 -0
- data/lib/grpc_kit/rpcs.rb +21 -5
- data/lib/grpc_kit/server.rb +16 -7
- data/lib/grpc_kit/session/headers.rb +2 -2
- data/lib/grpc_kit/session/stream.rb +5 -0
- data/lib/grpc_kit/{session/client.rb → sessions/client_session.rb} +5 -6
- data/lib/grpc_kit/{session/server.rb → sessions/server_session.rb} +21 -8
- data/lib/grpc_kit/streams/client_stream.rb +146 -0
- data/lib/grpc_kit/streams/server_stream.rb +105 -0
- data/lib/grpc_kit/{streams → transport}/packable.rb +2 -2
- data/lib/grpc_kit/{streams → transport}/send_buffer.rb +1 -1
- data/lib/grpc_kit/transports/client_transport.rb +96 -0
- data/lib/grpc_kit/transports/server_transport.rb +68 -0
- data/lib/grpc_kit/version.rb +1 -1
- metadata +32 -21
- data/lib/grpc_kit/interceptors/client_streamer.rb +0 -31
- data/lib/grpc_kit/interceptors/request_response.rb +0 -70
- data/lib/grpc_kit/interceptors/server_streamer.rb +0 -33
- data/lib/grpc_kit/interceptors/streaming.rb +0 -70
- data/lib/grpc_kit/rpcs/base.rb +0 -30
- data/lib/grpc_kit/rpcs/bidi_streamer.rb +0 -18
- data/lib/grpc_kit/rpcs/call.rb +0 -27
- data/lib/grpc_kit/rpcs/client_streamer.rb +0 -38
- data/lib/grpc_kit/rpcs/error.rb +0 -23
- data/lib/grpc_kit/rpcs/request_response.rb +0 -64
- data/lib/grpc_kit/rpcs/server_streamer.rb +0 -42
- data/lib/grpc_kit/session/duration.rb +0 -97
- data/lib/grpc_kit/stream.rb +0 -120
- data/lib/grpc_kit/streams/client.rb +0 -113
- data/lib/grpc_kit/streams/server.rb +0 -54
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            module GrpcKit
         | 
| 4 | 
            -
              module  | 
| 4 | 
            +
              module Transport
         | 
| 5 5 | 
             
                module Packable
         | 
| 6 6 | 
             
                  # @params data [String]
         | 
| 7 7 | 
             
                  # @params compress [Boolean]
         | 
| @@ -24,7 +24,7 @@ module GrpcKit | |
| 24 24 | 
             
                  end
         | 
| 25 25 |  | 
| 26 26 | 
             
                  def unpacker
         | 
| 27 | 
            -
                    @unpacker ||=  | 
| 27 | 
            +
                    @unpacker ||= Unpacker.new
         | 
| 28 28 | 
             
                  end
         | 
| 29 29 |  | 
| 30 30 | 
             
                  class Unpacker
         | 
| @@ -0,0 +1,96 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'grpc_kit/transport/packable'
         | 
| 4 | 
            +
            require 'grpc_kit/transport/send_buffer'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            module GrpcKit
         | 
| 7 | 
            +
              module Transports
         | 
| 8 | 
            +
                class ClientTransport
         | 
| 9 | 
            +
                  include GrpcKit::Transport::Packable
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  # @params session [GrpcKit::Session::Server|GrpcKit::Session::Client]
         | 
| 12 | 
            +
                  def initialize(session)
         | 
| 13 | 
            +
                    @session = session
         | 
| 14 | 
            +
                    @stream = nil # set later
         | 
| 15 | 
            +
                    @deferred = false
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def send_request(data, header, last: false)
         | 
| 19 | 
            +
                    @stream = @session.send_request(GrpcKit::Transport::SendBuffer.new, header)
         | 
| 20 | 
            +
                    write_data(data, last: last)
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  def close_and_flush
         | 
| 24 | 
            +
                    resume_if_need
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    @stream.end_write
         | 
| 27 | 
            +
                    @session.start(@stream.stream_id)
         | 
| 28 | 
            +
                    @stream.end_read
         | 
| 29 | 
            +
                    @deferred = false
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  def each
         | 
| 33 | 
            +
                    loop do
         | 
| 34 | 
            +
                      data = recv
         | 
| 35 | 
            +
                      return if data.nil?
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                      yield(data)
         | 
| 38 | 
            +
                    end
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  def write_data(buf, last: false)
         | 
| 42 | 
            +
                    resume_if_need
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    write(@stream.pending_send_data, pack(buf), last: last)
         | 
| 45 | 
            +
                    @session.run_once
         | 
| 46 | 
            +
                    @deferred = true unless last
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  def read_data(last: false)
         | 
| 50 | 
            +
                    unpack(read(last: last))
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  def recv_headers
         | 
| 54 | 
            +
                    wait_close
         | 
| 55 | 
            +
                    @stream.headers
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  private
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  def resume_if_need
         | 
| 61 | 
            +
                    if !@stream.end_write? && @deferred
         | 
| 62 | 
            +
                      @session.resume_data(@stream.stream_id)
         | 
| 63 | 
            +
                    end
         | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                  def wait_close
         | 
| 67 | 
            +
                    # XXX: wait until half close (remote) to get grpc-status
         | 
| 68 | 
            +
                    until @stream.close_remote?
         | 
| 69 | 
            +
                      @session.run_once
         | 
| 70 | 
            +
                    end
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  def write(stream, buf, last: false)
         | 
| 74 | 
            +
                    stream.write(buf, last: last)
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                  def read(last: false)
         | 
| 78 | 
            +
                    loop do
         | 
| 79 | 
            +
                      data = @stream.read_recv_data(last: last)
         | 
| 80 | 
            +
                      return data unless data.empty?
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                      if @stream.close_remote?
         | 
| 83 | 
            +
                        # it do not receive data which we need, it may receive invalid grpc-status
         | 
| 84 | 
            +
                        unless @stream.end_read?
         | 
| 85 | 
            +
                          return nil
         | 
| 86 | 
            +
                        end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                        return nil
         | 
| 89 | 
            +
                      end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                      @session.run_once
         | 
| 92 | 
            +
                    end
         | 
| 93 | 
            +
                  end
         | 
| 94 | 
            +
                end
         | 
| 95 | 
            +
              end
         | 
| 96 | 
            +
            end
         | 
| @@ -0,0 +1,68 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'grpc_kit/transport/packable'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module GrpcKit
         | 
| 6 | 
            +
              module Transports
         | 
| 7 | 
            +
                class ServerTransport
         | 
| 8 | 
            +
                  include GrpcKit::Transport::Packable
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  # @params session [GrpcKit::Sessions::ServerSession]
         | 
| 11 | 
            +
                  # @params stream [GrpcKit::Session::Stream]
         | 
| 12 | 
            +
                  def initialize(session, stream)
         | 
| 13 | 
            +
                    @session = session
         | 
| 14 | 
            +
                    @stream = stream
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  def each
         | 
| 18 | 
            +
                    loop do
         | 
| 19 | 
            +
                      data = recv
         | 
| 20 | 
            +
                      return if data.nil?
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                      yield(data)
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  def send_response(headers)
         | 
| 27 | 
            +
                    @session.submit_response(@stream.stream_id, headers)
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  def write_data(buf, last: false)
         | 
| 31 | 
            +
                    @stream.write_send_data(pack(buf), last: last)
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  def read_data(last: false)
         | 
| 35 | 
            +
                    unpack(read(last: last))
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  def write_trailers_data(trailer)
         | 
| 39 | 
            +
                    @stream.write_trailers_data(trailer)
         | 
| 40 | 
            +
                    @stream.end_write
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  def recv_headers
         | 
| 44 | 
            +
                    @stream.headers
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  private
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  def read(last: false)
         | 
| 50 | 
            +
                    loop do
         | 
| 51 | 
            +
                      data = @stream.read_recv_data(last: last)
         | 
| 52 | 
            +
                      return data unless data.empty?
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                      if @stream.close_remote?
         | 
| 55 | 
            +
                        # it do not receive data which we need, it may receive invalid grpc-status
         | 
| 56 | 
            +
                        unless @stream.end_read?
         | 
| 57 | 
            +
                          return nil
         | 
| 58 | 
            +
                        end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                        return nil
         | 
| 61 | 
            +
                      end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                      @session.run_once
         | 
| 64 | 
            +
                    end
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
            end
         | 
    
        data/lib/grpc_kit/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: grpc_kit
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - ganmacs
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-10- | 
| 11 | 
            +
            date: 2018-10-30 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: ds9
         | 
| @@ -172,6 +172,13 @@ files: | |
| 172 172 | 
             
            - grpc_kit.gemspec
         | 
| 173 173 | 
             
            - lib/grpc.rb
         | 
| 174 174 | 
             
            - lib/grpc_kit.rb
         | 
| 175 | 
            +
            - lib/grpc_kit/calls.rb
         | 
| 176 | 
            +
            - lib/grpc_kit/calls/client_client_streamer.rb
         | 
| 177 | 
            +
            - lib/grpc_kit/calls/client_request_response.rb
         | 
| 178 | 
            +
            - lib/grpc_kit/calls/client_server_streamer.rb
         | 
| 179 | 
            +
            - lib/grpc_kit/calls/server_client_streamer.rb
         | 
| 180 | 
            +
            - lib/grpc_kit/calls/server_request_response.rb
         | 
| 181 | 
            +
            - lib/grpc_kit/calls/server_server_streamer.rb
         | 
| 175 182 | 
             
            - lib/grpc_kit/client.rb
         | 
| 176 183 | 
             
            - lib/grpc_kit/errors.rb
         | 
| 177 184 | 
             
            - lib/grpc_kit/grpc/dsl.rb
         | 
| @@ -179,37 +186,41 @@ files: | |
| 179 186 | 
             
            - lib/grpc_kit/grpc/interceptor.rb
         | 
| 180 187 | 
             
            - lib/grpc_kit/grpc/logger.rb
         | 
| 181 188 | 
             
            - lib/grpc_kit/grpc/stream.rb
         | 
| 189 | 
            +
            - lib/grpc_kit/grpc_time.rb
         | 
| 182 190 | 
             
            - lib/grpc_kit/interceptors.rb
         | 
| 183 | 
            -
            - lib/grpc_kit/interceptors/ | 
| 184 | 
            -
            - lib/grpc_kit/interceptors/ | 
| 185 | 
            -
            - lib/grpc_kit/interceptors/ | 
| 186 | 
            -
            - lib/grpc_kit/interceptors/ | 
| 191 | 
            +
            - lib/grpc_kit/interceptors/client_client_streamer.rb
         | 
| 192 | 
            +
            - lib/grpc_kit/interceptors/client_request_response.rb
         | 
| 193 | 
            +
            - lib/grpc_kit/interceptors/client_server_streamer.rb
         | 
| 194 | 
            +
            - lib/grpc_kit/interceptors/server_client_streamer.rb
         | 
| 195 | 
            +
            - lib/grpc_kit/interceptors/server_request_response.rb
         | 
| 196 | 
            +
            - lib/grpc_kit/interceptors/server_server_streamer.rb
         | 
| 187 197 | 
             
            - lib/grpc_kit/method_config.rb
         | 
| 188 198 | 
             
            - lib/grpc_kit/protobuffer.rb
         | 
| 189 199 | 
             
            - lib/grpc_kit/rpc_desc.rb
         | 
| 190 200 | 
             
            - lib/grpc_kit/rpcs.rb
         | 
| 191 | 
            -
            - lib/grpc_kit/rpcs/ | 
| 192 | 
            -
            - lib/grpc_kit/rpcs/ | 
| 193 | 
            -
            - lib/grpc_kit/rpcs/ | 
| 194 | 
            -
            - lib/grpc_kit/rpcs/ | 
| 195 | 
            -
            - lib/grpc_kit/rpcs/ | 
| 196 | 
            -
            - lib/grpc_kit/rpcs/ | 
| 197 | 
            -
            - lib/grpc_kit/rpcs/ | 
| 201 | 
            +
            - lib/grpc_kit/rpcs/client_bidi_streamer.rb
         | 
| 202 | 
            +
            - lib/grpc_kit/rpcs/client_client_streamer.rb
         | 
| 203 | 
            +
            - lib/grpc_kit/rpcs/client_request_response.rb
         | 
| 204 | 
            +
            - lib/grpc_kit/rpcs/client_server_streamer.rb
         | 
| 205 | 
            +
            - lib/grpc_kit/rpcs/server_bidi_streamer.rb
         | 
| 206 | 
            +
            - lib/grpc_kit/rpcs/server_client_streamer.rb
         | 
| 207 | 
            +
            - lib/grpc_kit/rpcs/server_request_response.rb
         | 
| 208 | 
            +
            - lib/grpc_kit/rpcs/server_server_streamer.rb
         | 
| 198 209 | 
             
            - lib/grpc_kit/server.rb
         | 
| 199 210 | 
             
            - lib/grpc_kit/session/buffer.rb
         | 
| 200 | 
            -
            - lib/grpc_kit/session/client.rb
         | 
| 201 | 
            -
            - lib/grpc_kit/session/duration.rb
         | 
| 202 211 | 
             
            - lib/grpc_kit/session/headers.rb
         | 
| 203 212 | 
             
            - lib/grpc_kit/session/io.rb
         | 
| 204 | 
            -
            - lib/grpc_kit/session/server.rb
         | 
| 205 213 | 
             
            - lib/grpc_kit/session/stream.rb
         | 
| 206 214 | 
             
            - lib/grpc_kit/session/stream_status.rb
         | 
| 215 | 
            +
            - lib/grpc_kit/sessions/client_session.rb
         | 
| 216 | 
            +
            - lib/grpc_kit/sessions/server_session.rb
         | 
| 207 217 | 
             
            - lib/grpc_kit/status_codes.rb
         | 
| 208 | 
            -
            - lib/grpc_kit/ | 
| 209 | 
            -
            - lib/grpc_kit/streams/ | 
| 210 | 
            -
            - lib/grpc_kit/ | 
| 211 | 
            -
            - lib/grpc_kit/ | 
| 212 | 
            -
            - lib/grpc_kit/ | 
| 218 | 
            +
            - lib/grpc_kit/streams/client_stream.rb
         | 
| 219 | 
            +
            - lib/grpc_kit/streams/server_stream.rb
         | 
| 220 | 
            +
            - lib/grpc_kit/transport/packable.rb
         | 
| 221 | 
            +
            - lib/grpc_kit/transport/send_buffer.rb
         | 
| 222 | 
            +
            - lib/grpc_kit/transports/client_transport.rb
         | 
| 223 | 
            +
            - lib/grpc_kit/transports/server_transport.rb
         | 
| 213 224 | 
             
            - lib/grpc_kit/version.rb
         | 
| 214 225 | 
             
            homepage: https://github.com/ganmacs/grpc_kit
         | 
| 215 226 | 
             
            licenses:
         | 
| @@ -1,31 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'grpc_kit/interceptors/streaming'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module GrpcKit
         | 
| 6 | 
            -
              module Interceptors
         | 
| 7 | 
            -
                module Client
         | 
| 8 | 
            -
                  class ClientStreamer < Streaming
         | 
| 9 | 
            -
                    private
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                    def invoke(interceptor, call, metadata)
         | 
| 12 | 
            -
                      # We don't need a `:requests` parameter but,
         | 
| 13 | 
            -
                      # it shuoldn't remove from paramters due to having a compatibility of grpc gem.
         | 
| 14 | 
            -
                      interceptor.client_streamer(requests: nil, call: call, method: call.method, metadata: metadata) do
         | 
| 15 | 
            -
                        yield(call, metadata)
         | 
| 16 | 
            -
                      end
         | 
| 17 | 
            -
                    end
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                module Server
         | 
| 22 | 
            -
                  class ClientStreamer < Streaming
         | 
| 23 | 
            -
                    def invoke(interceptor, call)
         | 
| 24 | 
            -
                      interceptor.client_streamer(call: call, method: call.method) do
         | 
| 25 | 
            -
                        yield(call)
         | 
| 26 | 
            -
                      end
         | 
| 27 | 
            -
                    end
         | 
| 28 | 
            -
                  end
         | 
| 29 | 
            -
                end
         | 
| 30 | 
            -
              end
         | 
| 31 | 
            -
            end
         | 
| @@ -1,70 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module GrpcKit
         | 
| 4 | 
            -
              module Interceptors
         | 
| 5 | 
            -
                module Client
         | 
| 6 | 
            -
                  class RequestResponse
         | 
| 7 | 
            -
                    attr_writer :interceptors
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                    def initialize
         | 
| 10 | 
            -
                      # Cant' get interceptor at definition time...
         | 
| 11 | 
            -
                      @interceptors = nil
         | 
| 12 | 
            -
                    end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                    def intercept(request, call, metadata, &block)
         | 
| 15 | 
            -
                      if @interceptors && !@interceptors.empty?
         | 
| 16 | 
            -
                        do_intercept(@interceptors.dup, request, call, metadata, &block)
         | 
| 17 | 
            -
                      else
         | 
| 18 | 
            -
                        yield(request, call, metadata)
         | 
| 19 | 
            -
                      end
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    private
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                    def do_intercept(interceptors, request, call, metadata)
         | 
| 25 | 
            -
                      if interceptors.empty?
         | 
| 26 | 
            -
                        return yield(request, call, metadata)
         | 
| 27 | 
            -
                      end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                      interceptor = interceptors.pop
         | 
| 30 | 
            -
                      interceptor.request_response(request: request, call: call, method: call.method, metadata: metadata) do
         | 
| 31 | 
            -
                        do_intercept(interceptors, request, call, metadata) do |r, c, m|
         | 
| 32 | 
            -
                          yield(r, c, m)
         | 
| 33 | 
            -
                        end
         | 
| 34 | 
            -
                      end
         | 
| 35 | 
            -
                    end
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                module Server
         | 
| 40 | 
            -
                  class RequestResponse
         | 
| 41 | 
            -
                    def initialize(interceptors)
         | 
| 42 | 
            -
                      @interceptors = interceptors
         | 
| 43 | 
            -
                    end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                    def intercept(request, call, &block)
         | 
| 46 | 
            -
                      if @interceptors && !@interceptors.empty?
         | 
| 47 | 
            -
                        do_intercept(@interceptors.dup, request, call, &block)
         | 
| 48 | 
            -
                      else
         | 
| 49 | 
            -
                        yield(request, call)
         | 
| 50 | 
            -
                      end
         | 
| 51 | 
            -
                    end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                    private
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                    def do_intercept(interceptors, request, call)
         | 
| 56 | 
            -
                      if interceptors.empty?
         | 
| 57 | 
            -
                        return yield(request, call)
         | 
| 58 | 
            -
                      end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                      interceptor = interceptors.pop
         | 
| 61 | 
            -
                      interceptor.request_response(request: request, call: call, method: call.method) do
         | 
| 62 | 
            -
                        do_intercept(interceptors, request, call) do |req, c|
         | 
| 63 | 
            -
                          yield(req, c)
         | 
| 64 | 
            -
                        end
         | 
| 65 | 
            -
                      end
         | 
| 66 | 
            -
                    end
         | 
| 67 | 
            -
                  end
         | 
| 68 | 
            -
                end
         | 
| 69 | 
            -
              end
         | 
| 70 | 
            -
            end
         | 
| @@ -1,33 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'grpc_kit/interceptors/streaming'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module GrpcKit
         | 
| 6 | 
            -
              module Interceptors
         | 
| 7 | 
            -
                module Client
         | 
| 8 | 
            -
                  class ServerStreamer < Streaming
         | 
| 9 | 
            -
                    private
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                    def invoke(interceptor, call, metadata)
         | 
| 12 | 
            -
                      # We don't need a `:request` parameter but,
         | 
| 13 | 
            -
                      # it shuoldn't remove from paramters due to having a compatibility of grpc gem.
         | 
| 14 | 
            -
                      interceptor.server_streamer(request: nil, call: call, method: call.method, metadata: metadata) do
         | 
| 15 | 
            -
                        yield(call, metadata)
         | 
| 16 | 
            -
                      end
         | 
| 17 | 
            -
                    end
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                module Server
         | 
| 22 | 
            -
                  class ServerStreamer < Streaming
         | 
| 23 | 
            -
                    def invoke(interceptor, call)
         | 
| 24 | 
            -
                      # We don't need a `:request` parameter but,
         | 
| 25 | 
            -
                      # it shuoldn't remove from paramters due to having a compatibility of grpc gem.
         | 
| 26 | 
            -
                      interceptor.server_streamer(request: nil, call: call, method: call.method) do
         | 
| 27 | 
            -
                        yield(call)
         | 
| 28 | 
            -
                      end
         | 
| 29 | 
            -
                    end
         | 
| 30 | 
            -
                  end
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
            end
         | 
| @@ -1,70 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module GrpcKit
         | 
| 4 | 
            -
              module Interceptors
         | 
| 5 | 
            -
                module Client
         | 
| 6 | 
            -
                  class Streaming
         | 
| 7 | 
            -
                    attr_writer :interceptors
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                    def initialize
         | 
| 10 | 
            -
                      # Cant' get interceptor at definition time...
         | 
| 11 | 
            -
                      @interceptors = nil
         | 
| 12 | 
            -
                    end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                    def intercept(call, metadata, &block)
         | 
| 15 | 
            -
                      if @interceptors && !@interceptors.empty?
         | 
| 16 | 
            -
                        do_intercept(@interceptors.dup, call, metadata, &block)
         | 
| 17 | 
            -
                      else
         | 
| 18 | 
            -
                        yield(call, metadata)
         | 
| 19 | 
            -
                      end
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    private
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                    def do_intercept(interceptors, call, metadata)
         | 
| 25 | 
            -
                      if interceptors.empty?
         | 
| 26 | 
            -
                        return yield(call, metadata)
         | 
| 27 | 
            -
                      end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                      interceptor = interceptors.pop
         | 
| 30 | 
            -
                      invoke(interceptor, call, metadata) do |inter_call, meta|
         | 
| 31 | 
            -
                        do_intercept(interceptors, inter_call, meta) do |c, m|
         | 
| 32 | 
            -
                          yield(c, m)
         | 
| 33 | 
            -
                        end
         | 
| 34 | 
            -
                      end
         | 
| 35 | 
            -
                    end
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                module Server
         | 
| 40 | 
            -
                  class Streaming
         | 
| 41 | 
            -
                    def initialize(interceptors)
         | 
| 42 | 
            -
                      @interceptors = interceptors
         | 
| 43 | 
            -
                    end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                    def intercept(call, &block)
         | 
| 46 | 
            -
                      if @interceptors && !@interceptors.empty?
         | 
| 47 | 
            -
                        do_intercept(@interceptors.dup, call, &block)
         | 
| 48 | 
            -
                      else
         | 
| 49 | 
            -
                        yield(call)
         | 
| 50 | 
            -
                      end
         | 
| 51 | 
            -
                    end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                    private
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                    def do_intercept(interceptors, call)
         | 
| 56 | 
            -
                      if interceptors.empty?
         | 
| 57 | 
            -
                        return yield(call)
         | 
| 58 | 
            -
                      end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                      interceptor = interceptors.pop
         | 
| 61 | 
            -
                      invoke(interceptor, call) do |inter_call|
         | 
| 62 | 
            -
                        do_intercept(interceptors, inter_call) do |c|
         | 
| 63 | 
            -
                          yield(c)
         | 
| 64 | 
            -
                        end
         | 
| 65 | 
            -
                      end
         | 
| 66 | 
            -
                    end
         | 
| 67 | 
            -
                  end
         | 
| 68 | 
            -
                end
         | 
| 69 | 
            -
              end
         | 
| 70 | 
            -
            end
         | 
    
        data/lib/grpc_kit/rpcs/base.rb
    DELETED
    
    | @@ -1,30 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'timeout'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            require 'grpc_kit/errors'
         | 
| 6 | 
            -
            require 'grpc_kit/rpcs/call'
         | 
| 7 | 
            -
            require 'grpc_kit/streams/server'
         | 
| 8 | 
            -
            require 'grpc_kit/streams/client'
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            module GrpcKit
         | 
| 11 | 
            -
              module Rpcs
         | 
| 12 | 
            -
                module Client
         | 
| 13 | 
            -
                  class Base
         | 
| 14 | 
            -
                    attr_reader :config
         | 
| 15 | 
            -
                    def initialize(config)
         | 
| 16 | 
            -
                      @config = config
         | 
| 17 | 
            -
                    end
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                module Server
         | 
| 22 | 
            -
                  class Base
         | 
| 23 | 
            -
                    def initialize(handler, config)
         | 
| 24 | 
            -
                      @handler = handler
         | 
| 25 | 
            -
                      @config = config
         | 
| 26 | 
            -
                    end
         | 
| 27 | 
            -
                  end
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
              end
         | 
| 30 | 
            -
            end
         | 
| @@ -1,18 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'grpc_kit/rpcs/base'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module GrpcKit
         | 
| 6 | 
            -
              module Rpcs
         | 
| 7 | 
            -
                module Client
         | 
| 8 | 
            -
                  class BidiStreamer < Base
         | 
| 9 | 
            -
                    def invoke(session, data, opts = {}); end
         | 
| 10 | 
            -
                  end
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                module Server
         | 
| 14 | 
            -
                  class BidiStreamer < Base
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
            end
         | 
    
        data/lib/grpc_kit/rpcs/call.rb
    DELETED
    
    | @@ -1,27 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'forwardable'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module GrpcKit
         | 
| 6 | 
            -
              module Rpcs
         | 
| 7 | 
            -
                # compatible for grpc gem
         | 
| 8 | 
            -
                class Call
         | 
| 9 | 
            -
                  extend Forwardable
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  delegate %i[recv send_msg close_and_recv each].freeze => :@stream
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  Name = Struct.new(:name, :receiver)
         | 
| 14 | 
            -
                  Reciver = Struct.new(:class)
         | 
| 15 | 
            -
                  Klass = Struct.new(:service_name)
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                  attr_reader :metadata, :method
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  def initialize(metadata, method_name, service_name, stream)
         | 
| 20 | 
            -
                    @metadata = metadata
         | 
| 21 | 
            -
                    klass = Klass.new(service_name)
         | 
| 22 | 
            -
                    @method = Name.new(method_name, Reciver.new(klass))
         | 
| 23 | 
            -
                    @stream = stream
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
              end
         | 
| 27 | 
            -
            end
         | 
| @@ -1,38 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'grpc_kit/rpcs/base'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module GrpcKit
         | 
| 6 | 
            -
              module Rpcs
         | 
| 7 | 
            -
                module Client
         | 
| 8 | 
            -
                  class ClientStreamer < Base
         | 
| 9 | 
            -
                    def invoke(session, _request, authority:, metadata: {}, timeout: nil, **opts)
         | 
| 10 | 
            -
                      cs = GrpcKit::Streams::Client.new(config: @config, session: session, authority: authority)
         | 
| 11 | 
            -
                      call = GrpcKit::Rpcs::Call.new(metadata, @config.method_name, @config.service_name, cs)
         | 
| 12 | 
            -
                      @config.interceptor.intercept(call, metadata) do |s|
         | 
| 13 | 
            -
                        s
         | 
| 14 | 
            -
                      end
         | 
| 15 | 
            -
                    end
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                module Server
         | 
| 20 | 
            -
                  class ClientStreamer < Base
         | 
| 21 | 
            -
                    def invoke(stream, session)
         | 
| 22 | 
            -
                      ss = GrpcKit::Streams::Server.new(stream: stream, session: session, config: @config)
         | 
| 23 | 
            -
                      call = GrpcKit::Rpcs::Call.new(stream.headers.metadata, @config.method_name, @config.service_name, ss)
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                      if @config.interceptor
         | 
| 26 | 
            -
                        @config.interceptor.intercept(call) do |c|
         | 
| 27 | 
            -
                          resp = @handler.send(@config.ruby_style_method_name, c)
         | 
| 28 | 
            -
                          c.send_msg(resp, last: true)
         | 
| 29 | 
            -
                        end
         | 
| 30 | 
            -
                      else
         | 
| 31 | 
            -
                        resp = @handler.send(@config.ruby_style_method_name, call)
         | 
| 32 | 
            -
                        call.send_msg(resp, last: true)
         | 
| 33 | 
            -
                      end
         | 
| 34 | 
            -
                    end
         | 
| 35 | 
            -
                  end
         | 
| 36 | 
            -
                end
         | 
| 37 | 
            -
              end
         | 
| 38 | 
            -
            end
         | 
    
        data/lib/grpc_kit/rpcs/error.rb
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'grpc_kit/status_codes'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module GrpcKit
         | 
| 6 | 
            -
              module Rpcs
         | 
| 7 | 
            -
                module Client
         | 
| 8 | 
            -
                  class Error
         | 
| 9 | 
            -
                    # def invoke(session, request, authority:, error)
         | 
| 10 | 
            -
                    # end
         | 
| 11 | 
            -
                  end
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                module Server
         | 
| 15 | 
            -
                  class Error
         | 
| 16 | 
            -
                    def send_bad_status(stream, session, bad_status)
         | 
| 17 | 
            -
                      ss = GrpcKit::Streams::Server.new(stream: stream, protobuf: nil, session: session)
         | 
| 18 | 
            -
                      ss.send_status(status: bad_status.code, msg: bad_status.grpc_message)
         | 
| 19 | 
            -
                    end
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
            end
         |