Class: MessagePack::RPC::UDPServerTransport

Inherits:
Object
  • Object
show all
Defined in:
lib/msgpack/rpc/transport/udp.rb

Defined Under Namespace

Classes: ResponseSender, ServerSocket

Instance Method Summary collapse

Constructor Details

#initialize(address) ⇒ UDPServerTransport

Returns a new instance of UDPServerTransport.



124
125
126
127
# File 'lib/msgpack/rpc/transport/udp.rb', line 124

def initialize(address)
  @address = address
  @sock = nil
end

Instance Method Details

#closeObject

ServerTransport interface



152
153
154
155
156
# File 'lib/msgpack/rpc/transport/udp.rb', line 152

def close
  return unless @lsock
  @lsock.detach if @lsock.attached?
  @lsock.close
end

#listen(server) ⇒ Object

ServerTransport interface



130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/msgpack/rpc/transport/udp.rb', line 130

def listen(server)
  @server = server
  host, port = *@address.unpack
  io = UDPSocket.new
  io.bind(*@address)

  begin
    @sock = ServerSocket.new(io, @server)
  rescue
    io.close
    raise
  end

  begin
    @server.loop.attach(@sock)
  rescue
    @sock.close
    raise
  end
end