Method: GRPC::RpcServer#new_active_server_call

Defined in:
src/ruby/lib/grpc/generic/rpc_server.rb

#new_active_server_call(an_rpc) ⇒ Object


487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
# File 'src/ruby/lib/grpc/generic/rpc_server.rb', line 487

def new_active_server_call(an_rpc)
  return nil if an_rpc.nil? || an_rpc.call.nil?

  # allow the metadata to be accessed from the call
  an_rpc.call. = an_rpc.  # attaches md to call for handlers
  connect_md = nil
  unless @connect_md_proc.nil?
    connect_md = @connect_md_proc.call(an_rpc.method, an_rpc.)
  end

  return nil unless available?(an_rpc)
  return nil unless implemented?(an_rpc)

  # Create the ActiveCall. Indicate that metadata hasnt been sent yet.
  GRPC.logger.info("deadline is #{an_rpc.deadline}; (now=#{Time.now})")
  rpc_desc = rpc_descs[an_rpc.method.to_sym]
  c = ActiveCall.new(an_rpc.call,
                     rpc_desc.marshal_proc,
                     rpc_desc.unmarshal_proc(:input),
                     an_rpc.deadline,
                     metadata_received: true,
                     started: false,
                     metadata_to_send: connect_md)
  c.attach_peer_cert(an_rpc.call.peer_cert)
  mth = an_rpc.method.to_sym
  [c, mth]
end