Class: GrpcKit::Streams::Server

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/grpc_kit/streams/server.rb

Instance Method Summary collapse

Constructor Details

#initialize(stream:, session:, config:) ⇒ Server

Returns a new instance of Server.



15
16
17
18
19
# File 'lib/grpc_kit/streams/server.rb', line 15

def initialize(stream:, session:, config:)
  @stream = GrpcKit::Stream.new(protobuf: config.protobuf, session: session, stream: stream)
  @config = config
  @sent_first_msg = false
end

Instance Method Details

#recv(last: false) ⇒ Object

Raises:

  • (StopIteration)


33
34
35
36
37
38
# File 'lib/grpc_kit/streams/server.rb', line 33

def recv(last: false)
  data = @stream.recv(last: last, limit_size: @config.max_receive_message_size)
  raise StopIteration if data.nil?

  data
end

#send_msg(data, last: false) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/grpc_kit/streams/server.rb', line 21

def send_msg(data, last: false)
  if last
    @stream.send_trailer # TODO: pass trailer metadata
  end

  @stream.send(data, last: last, limit_size: @config.max_send_message_size)
  return if @sent_first_msg

  @stream.submit_response
  @sent_first_msg = true
end

#send_status(status: GrpcKit::StatusCodes::INTERNAL, msg: nil, metadata: {}) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/grpc_kit/streams/server.rb', line 45

def send_status(status: GrpcKit::StatusCodes::INTERNAL, msg: nil, metadata: {})
  @stream.send_trailer(status: status, msg: msg, metadata: )
  return if @sent_first_msg

  @stream.submit_response(piggyback_trailer: true)
  @sent_first_msg = true
end

#send_trailerObject



40
41
42
43
# File 'lib/grpc_kit/streams/server.rb', line 40

def send_trailer
  @stream.send_trailer # TODO: pass trailer metadata
  @stream.end_write
end