Unify nearly same method

`@call` instance variable is same in
ActiveCall#merge_metadata_and_send_if_not_already_sent and
ActiveCall#send_initial_metadata.
pull/15755/head
ganmacs 7 years ago
parent 9a2c0a8641
commit 277d894d7f
  1. 16
      src/ruby/lib/grpc/generic/active_call.rb

@ -116,9 +116,10 @@ module GRPC
# Sends the initial metadata that has yet to be sent. # Sends the initial metadata that has yet to be sent.
# Does nothing if metadata has already been sent for this call. # Does nothing if metadata has already been sent for this call.
def send_initial_metadata def send_initial_metadata(new_metadata = {})
@send_initial_md_mutex.synchronize do @send_initial_md_mutex.synchronize do
return if @metadata_sent return if @metadata_sent
@metadata_to_send.merge!(new_metadata)
@metadata_tag = ActiveCall.client_invoke(@call, @metadata_to_send) @metadata_tag = ActiveCall.client_invoke(@call, @metadata_to_send)
@metadata_sent = true @metadata_sent = true
end end
@ -388,7 +389,7 @@ module GRPC
def client_streamer(requests, metadata: {}) def client_streamer(requests, metadata: {})
raise_error_if_already_executed raise_error_if_already_executed
begin begin
merge_metadata_and_send_if_not_already_sent(metadata) send_initial_metadata(metadata)
requests.each { |r| @call.run_batch(SEND_MESSAGE => @marshal.call(r)) } requests.each { |r| @call.run_batch(SEND_MESSAGE => @marshal.call(r)) }
rescue GRPC::Core::CallError => e rescue GRPC::Core::CallError => e
receive_and_check_status # check for Cancelled receive_and_check_status # check for Cancelled
@ -490,7 +491,7 @@ module GRPC
raise_error_if_already_executed raise_error_if_already_executed
# Metadata might have already been sent if this is an operation view # Metadata might have already been sent if this is an operation view
begin begin
merge_metadata_and_send_if_not_already_sent(metadata) send_initial_metadata(metadata)
rescue GRPC::Core::CallError => e rescue GRPC::Core::CallError => e
batch_result = @call.run_batch(RECV_STATUS_ON_CLIENT => nil) batch_result = @call.run_batch(RECV_STATUS_ON_CLIENT => nil)
set_input_stream_done set_input_stream_done
@ -571,15 +572,6 @@ module GRPC
end end
end end
def merge_metadata_and_send_if_not_already_sent(new_metadata = {})
@send_initial_md_mutex.synchronize do
return if @metadata_sent
@metadata_to_send.merge!(new_metadata)
@call.run_batch(SEND_INITIAL_METADATA => @metadata_to_send)
@metadata_sent = true
end
end
def attach_peer_cert(peer_cert) def attach_peer_cert(peer_cert)
@peer_cert = peer_cert @peer_cert = peer_cert
end end

Loading…
Cancel
Save