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}ms"
        end
      end
    end

  response
end