class Addrinfo
Public Class Methods
parse(*args)
click to toggle source
# File lib/gxg/gxg_augmented.rb, line 1752 def self.parse(*args) # Attempts to create an address object for the given URI/URL address = nil if args[0].is_a?(::URI::Generic) raw_uri = args[0] else raw_uri = ::URI::parse(*args) end # the_protocol = nil the_port = nil service_details = ::GxG::SYSTEM.service_ports_search({:scheme => raw_uri.scheme()}) if service_details.keys().size > 0 service_details = service_details[(service_details.keys()[0])] if service_details[:usage_preference] if service_details[:usage][(service_details[:usage_preference])].is_a?(::Array) the_port = service_details[:usage][(service_details[:usage_preference])][0] if the_port.is_a?(::Range) the_protocol = (service_details[:usage_preference]) the_port = the_port.first end end else if service_details[:usage][(service_details[:usage].keys()[0])].is_a?(::Array) the_port = service_details[:usage][(service_details[:usage].keys()[0])][0] if the_port.is_a?(::Range) the_protocol = (service_details[:usage].keys()[0]) the_port = the_port.first end end end end unless the_protocol the_protocol = raw_uri.scheme().to_sym end # case the_protocol when :inproc # when :ipc # LATER: Anything to be done for IPC stuff here??? (Not available on winderz) when :pgm # when :epgm # when :unix, :socket if (raw_uri.hostname().to_s.size == 0) # Unix socket address = ::Addrinfo.unix(raw_uri.path()) else # tcp used by default for ipc if raw_uri.hostname().to_s.size > 0 address = ::Addrinfo.tcp(raw_uri.hostname(), (raw_uri.port() || raw_uri.default_port() || the_port || "*")) else address = ::Addrinfo.tcp("0.0.0.0", (raw_uri.port() || raw_uri.default_port() || the_port || "*")) end end when :tcp, :tcp4, :tcp6 if raw_uri.hostname().to_s.size > 0 address = ::Addrinfo.tcp(raw_uri.hostname(), (raw_uri.port() || raw_uri.default_port() || the_port || "*")) else address = ::Addrinfo.tcp("0.0.0.0", (raw_uri.port() || raw_uri.default_port() || the_port || "*")) end when :udp, :udp4, :udp6 if raw_uri.hostname().to_s.size > 0 address = ::Addrinfo.udp(raw_uri.hostname(), (raw_uri.port() || raw_uri.default_port() || the_port || "*")) else address = ::Addrinfo.udp("0.0.0.0", (raw_uri.port() || raw_uri.default_port() || the_port || "*")) end end # address end
Public Instance Methods
uri_info()
click to toggle source
# File lib/gxg/gxg_augmented.rb, line 1826 def uri_info() result = nil if self.ip?() case self.protocol when ::Socket::IPPROTO_TCP result = ::URI::parse("tcp://#{self.ip_address()}:#{(self.ip_port() || '*')}") when ::Socket::IPPROTO_UDP result = ::URI::parse("udp://#{self.ip_address()}:#{(self.ip_port() || '*')}") end else if self.unix?() result = ::URI::parse("unix://#{self.unix_path()}") else # not sure what to do here end end result end