aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ruby
diff options
context:
space:
mode:
authorGravatar Tim Emiola <temiola@google.com>2015-03-06 11:22:41 -0800
committerGravatar Tim Emiola <temiola@google.com>2015-03-06 11:36:24 -0800
commitc32375c67c1142563a65226eb8e047d6ba73943a (patch)
treef750e91a7ba7e381c5098f7cc216e49bcda5efc4 /src/ruby
parentee092fcc62bdbae5d5351ad67661c84ff92e33c9 (diff)
Decompose the ClientStub initialize method
Diffstat (limited to 'src/ruby')
-rw-r--r--src/ruby/lib/grpc/generic/client_stub.rb51
1 files changed, 23 insertions, 28 deletions
diff --git a/src/ruby/lib/grpc/generic/client_stub.rb b/src/ruby/lib/grpc/generic/client_stub.rb
index f234984eec..fc9c7a2b52 100644
--- a/src/ruby/lib/grpc/generic/client_stub.rb
+++ b/src/ruby/lib/grpc/generic/client_stub.rb
@@ -39,6 +39,25 @@ module GRPC
# Default deadline is 5 seconds.
DEFAULT_DEADLINE = 5
+ # setup_channel is used by #initialize to constuct a channel from its
+ # arguments.
+ def self.setup_channel(alt_chan, host, creds, **kw)
+ unless alt_chan.nil?
+ fail(TypeError, '!Channel') unless alt_chan.is_a?(Core::Channel)
+ return alt_chan
+ end
+ return Core::Channel.new(host, kw) if creds.nil?
+ fail(TypeError, '!Credentials') unless creds.is_a?(Core::Credentials)
+ Core::Channel.new(host, kw, creds)
+ end
+
+ # check_update_metadata is used by #initialize verify that it's a Proc.
+ def self.check_update_metadata(update_metadata)
+ return update_metadata if update_metadata.nil?
+ fail(TypeError, '!is_a?Proc') unless update_metadata.is_a?(Proc)
+ update_metadata
+ end
+
# Creates a new ClientStub.
#
# Minimally, a stub is created with the just the host of the gRPC service
@@ -73,39 +92,15 @@ module GRPC
# @param update_metadata a func that updates metadata as described above
# @param kw [KeywordArgs]the channel arguments
def initialize(host, q,
- channel_override:nil,
+ channel_override: nil,
deadline: DEFAULT_DEADLINE,
creds: nil,
update_metadata: nil,
**kw)
- unless q.is_a? Core::CompletionQueue
- fail(ArgumentError, 'not a CompletionQueue')
- end
+ fail(TypeError, '!CompletionQueue') unless q.is_a?(Core::CompletionQueue)
@queue = q
-
- # set the channel instance
- if !channel_override.nil?
- ch = channel_override
- fail(ArgumentError, 'not a Channel') unless ch.is_a? Core::Channel
- else
- if creds.nil?
- ch = Core::Channel.new(host, kw)
- elsif !creds.is_a?(Core::Credentials)
- fail(ArgumentError, 'not a Credentials')
- else
- ch = Core::Channel.new(host, kw, creds)
- end
- end
- @ch = ch
-
- @update_metadata = nil
- unless update_metadata.nil?
- unless update_metadata.is_a? Proc
- fail(ArgumentError, 'update_metadata is not a Proc')
- end
- @update_metadata = update_metadata
- end
-
+ @ch = ClientStub.setup_channel(channel_override, host, creds, **kw)
+ @update_metadata = ClientStub.check_update_metadata(update_metadata)
@host = host
@deadline = deadline
end