Class: ICMP4EM::Proxy::Request

Inherits:
Object
  • Object
show all
Includes:
EM::Deferrable
Defined in:
lib/icmp4em/proxy/request.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Request

Returns a new instance of Request.



25
26
# File 'lib/icmp4em/proxy/request.rb', line 25

def initialize args = {}
end

Instance Attribute Details

#dest_ipObject

Returns the value of attribute dest_ip.



8
9
10
# File 'lib/icmp4em/proxy/request.rb', line 8

def dest_ip
  @dest_ip
end

#packetObject

Returns the value of attribute packet.



9
10
11
# File 'lib/icmp4em/proxy/request.rb', line 9

def packet
  @packet
end

#source_ipObject

Returns the value of attribute source_ip.



6
7
8
# File 'lib/icmp4em/proxy/request.rb', line 6

def source_ip
  @source_ip
end

#source_portObject

Returns the value of attribute source_port.



7
8
9
# File 'lib/icmp4em/proxy/request.rb', line 7

def source_port
  @source_port
end

Class Method Details

.from_bytes(args = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/icmp4em/proxy/request.rb', line 11

def self.from_bytes args = {}
  request = Request.new

  data = args[:data]
  address_length = data.unpack("n").first

  request.source_ip = args[:source_ip]
  request.source_port = args[:source_port]
  request.dest_ip = data[2,address_length]
  request.packet = Packet.from_bytes data[address_length + 2, data.length]

  request
end

Instance Method Details

#keyObject



32
33
34
# File 'lib/icmp4em/proxy/request.rb', line 32

def key
  @packet.key
end

#key_stringObject



36
37
38
# File 'lib/icmp4em/proxy/request.rb', line 36

def key_string
  key.unpack("H*").first
end

#send(args = {}) ⇒ Object



40
41
42
43
# File 'lib/icmp4em/proxy/request.rb', line 40

def send args = {}
  sock_addr = Socket.pack_sockaddr_in(0, @dest_ip)
  args[:socket].send @packet.to_bytes, 0, sock_addr
end

#to_bytesObject



28
29
30
# File 'lib/icmp4em/proxy/request.rb', line 28

def to_bytes
  [@dest_ip.length].pack("n") + @dest_ip + @packet.to_bytes
end