Sha256: 4071ebc4c53b287050ec83b3df5ac07611a805e84d7426dc64970b95547261f0
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true require 'grpc_kit/session/io' require 'grpc_kit/session/server' module GrpcKit class Server def initialize(interceptors: []) @sessions = [] @rpc_descs = {} @interceptors = interceptors end # @params handler [object] 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 def run GrpcKit.logger.info("Start grpc_kit v#{GrpcKit::VERSION}") @rpc_descs.freeze end def stop GrpcKit.logger.info('Stop grpc_kit') @sessions.each(&:stop) end def session_start(conn) session = GrpcKit::Session::Server.new( GrpcKit::Session::IO.new(conn), self, ) @sessions << session session.submit_settings([]) session.start # blocking session.finish end def dispatch(stream, session) rpc = @rpc_descs[stream.headers.path] unless rpc raise "Unkown path #{path}" end rpc.invoke(stream, session) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
grpc_kit-0.1.1 | lib/grpc_kit/server.rb |