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
# File 'lib/sub_zero/socket/sender.rb', line 5

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

  ::Timeout.timeout t do
    context do |c|
      socket c do |s|
        send_message s, request
        response = receive_message(s, request)
      end
    end
  end

  response
rescue ::Timeout::Error
  raise SubZero::Socket::TimeoutError, "call timeout after #{t}ms"
end