Class: UDPRest::UDPServer

Inherits:
Object
  • Object
show all
Defined in:
lib/udp_rest/udp.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeUDPServer

Returns a new instance of UDPServer.



9
10
11
12
# File 'lib/udp_rest/udp.rb', line 9

def initialize
    @max_packet_size = 512
    self.socket = UDPSocket.new
end

Instance Attribute Details

#socketObject

Returns the value of attribute socket.



7
8
9
# File 'lib/udp_rest/udp.rb', line 7

def socket
  @socket
end

Instance Method Details

#hostObject



39
40
41
# File 'lib/udp_rest/udp.rb', line 39

def host
    @host
end

#listen(port, options = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/udp_rest/udp.rb', line 18

def listen(port, options = {})
    @port = port.to_i
    @host = options[:host] || '0.0.0.0'
    self.socket.bind(@host, @port)

    loop do
        response = self.receive()
        yield(response)
    end
end

#max_packet_sizeObject



14
15
16
# File 'lib/udp_rest/udp.rb', line 14

def max_packet_size
    @max_packet_size
end

#portObject



43
44
45
# File 'lib/udp_rest/udp.rb', line 43

def port
    @port
end

#receiveObject



29
30
31
32
# File 'lib/udp_rest/udp.rb', line 29

def receive
    data = self.socket.recvfrom(@max_packet_size)
    UDPPacket.new(data)
end

#send(text, host, port) ⇒ Object



34
35
36
37
# File 'lib/udp_rest/udp.rb', line 34

def send(text, host, port)
    raise "message too long (max is #{@max_packet_size}b, was #{text.bytesize})" if text.bytesize > @max_packet_size
    self.socket.send(text, 0, host, port)
end