Module: SubZero::Socket::Sender

Included in:
SubZero::Socket
Defined in:
lib/sub_zero/socket/sender.rb

Instance Method Summary collapse

Instance Method Details

#call(request) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/sub_zero/socket/sender.rb', line 5

def call request
  response = nil
  t = request.options.fetch(:timeout, 1000) / 1000.0

  context do |c|
    socket c do |s|
      begin
        ::Timeout.timeout t do
          send_message s, request
          response = receive_message(s, request)
        end
      rescue ::Timeout::Error
        raise SubZero::Socket::TimeoutError, "call timeout after #{t}s"
      end
    end
  end

  response
end