Class: GrpcKit::Server
- Inherits:
-
Object
- Object
- GrpcKit::Server
- Defined in:
- lib/grpc_kit/server.rb
Instance Method Summary collapse
- #dispatch(stream, session) ⇒ Object
- #handle(handler) ⇒ Object
-
#initialize(interceptors: []) ⇒ Server
constructor
A new instance of Server.
- #run(conn) ⇒ Object
- #shutdown ⇒ Object
Constructor Details
#initialize(interceptors: []) ⇒ Server
Returns a new instance of Server.
8 9 10 11 12 13 14 15 16 |
# File 'lib/grpc_kit/server.rb', line 8 def initialize(interceptors: []) @sessions = [] @rpc_descs = {} @error_rpc = GrpcKit::Rpcs::Server::Error.new @interceptors = interceptors @mutex = Mutex.new GrpcKit.logger.debug("Launched grpc_kit(v#{GrpcKit::VERSION})") end |
Instance Method Details
#dispatch(stream, session) ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/grpc_kit/server.rb', line 44 def dispatch(stream, session) rpc = @rpc_descs[stream.headers.path] unless rpc return @error_rpc.send_bad_status(stream, session, GrpcKit::Errors::Unimplemented.new(stream.headers.path)) end rpc.invoke(stream, session) end |
#handle(handler) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/grpc_kit/server.rb', line 19 def handle(handler) handler.class.rpc_descs.each do |path, rpc_desc| if @rpc_descs[path] raise "Duplicated method registered #{path}, class: #{handler}" end @rpc_descs[path] = rpc_desc.build_server(handler, interceptors: @interceptors) end end |
#run(conn) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/grpc_kit/server.rb', line 29 def run(conn) establish_session(conn) do |s| s.submit_settings([]) s.start end end |
#shutdown ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/grpc_kit/server.rb', line 36 def shutdown GrpcKit.logger.debug('Shutdown grpc_kit') @mutex.synchronize do @sessions.each(&:finish) end end |