Class: Addrinfo
- Defined in:
- ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb
Instance Attribute Summary collapse
-
#canonname ⇒ Object
readonly
def bind.
-
#protocol ⇒ Object
readonly
Returns the value of attribute protocol.
-
#socktype ⇒ Object
readonly
Returns the value of attribute socktype.
Class Method Summary collapse
- .foreach(nodename, service, family = nil, socktype = nil, protocol = nil, flags = 0, &block) ⇒ Object
- .ip(host) ⇒ Object
- .tcp(host, port) ⇒ Object
- .udp(host, port) ⇒ Object
- .unix(path, socktype = Socket::SOCK_STREAM) ⇒ Object
Instance Method Summary collapse
- #_to_array ⇒ Object
- #afamily ⇒ Object
-
#initialize(sockaddr, family = Socket::PF_UNSPEC, socktype = 0, protocol = 0) ⇒ Addrinfo
constructor
A new instance of Addrinfo.
-
#inspect ⇒ Object
def family_addrinfo(host, port=nil) def getnameinfo(flags=0) Socket.getnameinfo end.
- #inspect_sockaddr ⇒ Object
- #ip? ⇒ Boolean
- #ip_address ⇒ Object
- #ip_port ⇒ Object
- #ip_unpack ⇒ Object
- #ipv4? ⇒ Boolean
-
#ipv6? ⇒ Boolean
def ipv4_loopback? def ipv4_multicast? def ipv4_private?.
-
#pfamily ⇒ Object
def ipv6_loopback? def ipv6_mc_global? def ipv6_mc_linklocal? def ipv6_mc_nodelocal? def ipv6_mc_orilocal? def ipv6_mc_sitelocal? def ipv6_multicast? def ipv6_to_ipv4 def ipv6_unspecified def ipv6_v4compat? def ipv6_v4mapped? def listen(backlog=5).
- #to_sockaddr ⇒ Object (also: #to_s)
- #unix? ⇒ Boolean
Constructor Details
#initialize(sockaddr, family = Socket::PF_UNSPEC, socktype = 0, protocol = 0) ⇒ Addrinfo
Returns a new instance of Addrinfo.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 2 def initialize(sockaddr, family=Socket::PF_UNSPEC, socktype=0, protocol=0) @hostname = nil if sockaddr.is_a? Array sary = sockaddr if sary[0] == 'AF_INET' || sary[0] == 'AF_INET6' @sockaddr = Socket.sockaddr_in(sary[1], sary[3]) @hostname = sary[2] elsif sary[0] == 'AF_UNIX' @sockaddr = Socket.sockaddr_un(sary[1]) end else @sockaddr = sockaddr.dup end if family == Socket::PF_UNSPEC or family == nil @family = Socket._sockaddr_family(@sockaddr) else @family = family end @socktype = socktype @protocol = protocol @canonname = nil end |
Instance Attribute Details
#canonname ⇒ Object (readonly)
def bind
53 54 55 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 53 def canonname @canonname end |
#protocol ⇒ Object (readonly)
Returns the value of attribute protocol.
139 140 141 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 139 def protocol @protocol end |
#socktype ⇒ Object (readonly)
Returns the value of attribute socktype.
140 141 142 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 140 def socktype @socktype end |
Class Method Details
.foreach(nodename, service, family = nil, socktype = nil, protocol = nil, flags = 0, &block) ⇒ Object
25 26 27 28 29 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 25 def self.foreach(nodename, service, family=nil, socktype=nil, protocol=nil, flags=0, &block) a = self.getaddrinfo(nodename, service, family, socktype, protocol, flags) a.each { |ai| block.call(ai) } a end |
.ip(host) ⇒ Object
31 32 33 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 31 def self.ip(host) Addrinfo.new(Socket.sockaddr_in(0, host)) end |
.tcp(host, port) ⇒ Object
35 36 37 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 35 def self.tcp(host, port) Addrinfo.getaddrinfo(host, port, nil, Socket::SOCK_STREAM, Socket::IPPROTO_TCP)[0] end |
.udp(host, port) ⇒ Object
39 40 41 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 39 def self.udp(host, port) Addrinfo.getaddrinfo(host, port, nil, Socket::SOCK_DGRAM, Socket::IPPROTO_UDP)[0] end |
.unix(path, socktype = Socket::SOCK_STREAM) ⇒ Object
43 44 45 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 43 def self.unix(path, socktype=Socket::SOCK_STREAM) Addrinfo.new(Socket.sockaddr_un(path), Socket::AF_UNIX, socktype) end |
Instance Method Details
#_to_array ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 142 def _to_array case @family when Socket::AF_INET s = "AF_INET" when Socket::AF_INET6 s = "AF_INET6" when Socket::AF_UNIX s = "AF_UNIX" else s = "(unknown AF)" end addr, port = self.getnameinfo(Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV) [ s, port.to_i, addr, addr ] end |
#afamily ⇒ Object
47 48 49 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 47 def afamily @family end |
#inspect ⇒ Object
def family_addrinfo(host, port=nil) def getnameinfo(flags=0)
Socket.getnameinfo
end
64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 64 def inspect if ipv4? or ipv6? if @protocol == Socket::IPPROTO_TCP or (@socktype == Socket::SOCK_STREAM and @protocol == 0) proto = 'TCP' elsif @protocol == Socket::IPPROTO_UDP or (@socktype == Socket::SOCK_DGRAM and @protocol == 0) proto = 'UDP' else proto = '???' end "#<Addrinfo: #{inspect_sockaddr} #{proto}>" else "#<Addrinfo: #{self.unix_path} SOCK_STREAM>" end end |
#inspect_sockaddr ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 79 def inspect_sockaddr if ipv4? a, p = ip_unpack "#{a}:#{p}" elsif ipv6? a, p = ip_unpack "[#{a}]:#{p}" elsif unix? unix_path else '???' end end |
#ip? ⇒ Boolean
93 94 95 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 93 def ip? ipv4? or ipv6? end |
#ip_address ⇒ Object
97 98 99 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 97 def ip_address ip_unpack[0] end |
#ip_port ⇒ Object
101 102 103 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 101 def ip_port ip_unpack[1] end |
#ip_unpack ⇒ Object
105 106 107 108 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 105 def ip_unpack h, p = getnameinfo(Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV) [ h, p.to_i ] end |
#ipv4? ⇒ Boolean
110 111 112 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 110 def ipv4? @family == Socket::AF_INET end |
#ipv6? ⇒ Boolean
def ipv4_loopback? def ipv4_multicast? def ipv4_private?
118 119 120 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 118 def ipv6? @family == Socket::AF_INET6 end |
#pfamily ⇒ Object
def ipv6_loopback? def ipv6_mc_global? def ipv6_mc_linklocal? def ipv6_mc_nodelocal? def ipv6_mc_orilocal? def ipv6_mc_sitelocal? def ipv6_multicast? def ipv6_to_ipv4 def ipv6_unspecified def ipv6_v4compat? def ipv6_v4mapped? def listen(backlog=5)
135 136 137 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 135 def pfamily @family end |
#to_sockaddr ⇒ Object Also known as: to_s
157 158 159 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 157 def to_sockaddr @sockaddr end |
#unix? ⇒ Boolean
163 164 165 |
# File 'ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrblib/socket.rb', line 163 def unix? @family == Socket::AF_UNIX end |