Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.ext.socket;
  
  import org.jruby.Ruby;
 
 
 public class Addrinfo extends RubyObject {
     public static void createAddrinfo(Ruby runtime) {
         RubyClass addrinfo = runtime.defineClass(
                 "Addrinfo",
                 runtime.getClass("Data"),
                 new ObjectAllocator() {
                     public IRubyObject allocate(Ruby runtimeRubyClass klazz) {
                         return new Addrinfo(runtimeklazz);
                     }
                 });
         
         addrinfo.defineAnnotatedMethods(Addrinfo.class);
     }
     
     public Addrinfo(Ruby runtimeRubyClass cls) {
         super(runtimecls);
     }
 
     public Addrinfo(Ruby runtimeRubyClass clsInetAddress inetAddress) {
         super(runtimecls);
         this. = inetAddress;
 
         this. = .;
         this. = inetAddress instanceof Inet4Address ? . : .;
         this. = inetAddress instanceof Inet4Address ? . : .;
         this. = .;
     }
 
     public Addrinfo(Ruby runtimeRubyClass clsInetAddress inetAddressint port) {
         super(runtimecls);
         this. = inetAddress;
         this. = port;
 
         this. = .;
         this. = inetAddress instanceof Inet4Address ? . : .;
         this. = inetAddress instanceof Inet4Address ? . : .;
         this. = .;
     }
 
     public Addrinfo(Ruby runtimeRubyClass clsInetAddress inetAddressint portSocketType socketType) {
         super(runtimecls);
         this. = inetAddress;
         this. = port;
         this. = socketType;
 
         this. = .;
         this. = inetAddress instanceof Inet4Address ? . : .;
         this. = inetAddress instanceof Inet4Address ? . : .;
         this. = .;
     }
 
     public InetAddress getInetAddress() {
         return ;
     }
 
     public int getPort() {
         return ;
     }
 
     @JRubyMethod
     public IRubyObject initialize(ThreadContext contextIRubyObject _sockaddr) {
         initializeCommon(context.runtime_sockaddrnullnullnull);
 
         return context.nil;
     }
 
     @JRubyMethod
     public IRubyObject initialize(ThreadContext contextIRubyObject _sockaddrIRubyObject _family) {
         initializeCommon(context.runtime_sockaddr_familynullnull);
 
         return context.nil;
     }
 
     @JRubyMethod
     public IRubyObject initialize(ThreadContext contextIRubyObject _sockaddrIRubyObject _familyIRubyObject _socktype) {
         initializeCommon(context.runtime_sockaddr_family_socktypenull);
 
         return context.nil;
    }
    @JRubyMethod(required = 1, optional = 4)
    public IRubyObject initialize(ThreadContext contextIRubyObject[] args) {
        switch (args.length) {
            case 1: return initialize(contextargs[0]);
            case 2: return initialize(contextargs[0], args[1]);
            case 3: return initialize(contextargs[0], args[1], args[2]);
        }
        IRubyObject _sockaddr = args[0];
        IRubyObject _family = args[1];
        IRubyObject _socktype = args[2];
        IRubyObject _protocol = args[3];
        initializeCommon(context.runtime_sockaddr_family_socktype_protocol);
        return context.nil;
    }
    private void initializeCommon(Ruby runtimeIRubyObject sockaddrIRubyObject familyIRubyObject sockIRubyObject port) {
        try {
             = SocketUtils.getRubyInetAddress(sockaddr.convertToString().getByteList());
            if (family == null) {
                this. =  instanceof Inet4Address ? . : .;
                this. =  instanceof Inet4Address ? . : .;
                this. = .;
            } else {
                this. = SocketUtils.protocolFamilyFromArg(family);
                if (this. == .) {
                    throw runtime.newErrnoENOPROTOOPTError();
                }
                this. = SocketUtils.addressFamilyFromArg(family);
                if (this. == .) {
                    throw runtime.newErrnoENOPROTOOPTError();
                }
                this. = .;
            }
            if (sock == null) {
                this. = .;
            } else {
                this. = SocketUtils.sockFromArg(sock);
            }
            if (port == null) {
                this. = 0;
            } else {
                this. = (int)port.convertToInteger().getLongValue();
            }
        } catch (IOException ioe) {
            throw runtime.newIOErrorFromException(ioe);
        }
    }
    public IRubyObject inspect(ThreadContext context) {
        // TODO: MRI also shows hostname, but we don't want to reverse every time...
        String portString =  == 0 ? "" : ":" + ;
        return context.runtime.newString("#<Addrinfo: " + .getHostAddress() +  portString + ">");
    }
    public IRubyObject inspect_sockaddr(ThreadContext context) {
        String portString =  == 0 ? "" : ":" + ;
        return context.runtime.newString(.getHostAddress() + portString);
    }
    @JRubyMethod(rest = true, meta = true)
    public static IRubyObject getaddrinfo(ThreadContext contextIRubyObject recvIRubyObject[] args) {
        return RubyArray.newArray(context.runtime, SocketUtils.getaddrinfoList(contextargs));
    }
    @JRubyMethod(meta = true)
    public static IRubyObject ip(ThreadContext contextIRubyObject recvIRubyObject arg) {
        String host = arg.convertToString().toString();
        try {
            InetAddress addy = InetAddress.getByName(host);
            return new Addrinfo(context.runtime, (RubyClass)recvaddy);
        } catch (UnknownHostException uhe) {
            throw SocketUtils.sockerr(context.runtime"host not found");
        }
    }
    @JRubyMethod(meta = true)
    public static IRubyObject tcp(ThreadContext contextIRubyObject recvIRubyObject arg0IRubyObject arg1) {
        Addrinfo addrinfo = new Addrinfo(context.runtime, (RubyClass)recv);
        addrinfo.initializeCommon(context.runtimearg0nullnullarg1);
        return addrinfo;
    }
    @JRubyMethod(meta = true)
    public static IRubyObject udp(ThreadContext contextIRubyObject recvIRubyObject arg0IRubyObject arg1) {
        return ((RubyClass)recv).newInstance(contextarg0arg1.);
    }
    @JRubyMethod(rest = true, meta = true, notImplemented = true)
    public static IRubyObject unix(ThreadContext contextIRubyObject recvIRubyObject[] args) {
        return ((RubyClass)recv).newInstance(contextargs.);
    }
    public IRubyObject afamily(ThreadContext context) {
        return context.runtime.newFixnum(.intValue());
    }
    @JRubyMethod(notImplemented = true)
    public IRubyObject pfamily(ThreadContext context) {
        return context.runtime.newFixnum(.intValue());
    }
    @JRubyMethod(notImplemented = true)
    public IRubyObject socktype(ThreadContext context) {
        return context.runtime.newFixnum(.intValue());
    }
    @JRubyMethod(notImplemented = true)
    public IRubyObject protocol(ThreadContext context) {
        return context.runtime.newFixnum();
    }
    public IRubyObject canonname(ThreadContext context) {
        return context.runtime.newString(.getCanonicalHostName());
    }
    @JRubyMethod(name = "ipv4?")
    public IRubyObject ipv4_p(ThreadContext context) {
        return context.runtime.newBoolean( == .);
    }
    @JRubyMethod(name = "ipv6?")
    public IRubyObject ipv6_p(ThreadContext context) {
        return context.runtime.newBoolean( == .);
    }
    @JRubyMethod(name = "unix?")
    public IRubyObject unix_p(ThreadContext context) {
        return context.runtime.newBoolean( == .);
    }
    @JRubyMethod(name = "ip?", notImplemented = true)
    public IRubyObject ip_p(ThreadContext context) {
        return context.runtime.newBoolean( == . ||  == .);
    }
    public IRubyObject ip_unpack(ThreadContext context) {
        byte[] bytes = .getAddress();
        RubyArray ary = RubyArray.newArray(context.runtimebytes.length);
        for (byte bite : bytesary.append(context.runtime.newFixnum(bite));
        return ary;
    }
    @JRubyMethod(notImplemented = true)
    public IRubyObject ip_address(ThreadContext context) {
        return context.runtime.newString(.getHostAddress());
    }
    @JRubyMethod(notImplemented = true)
    public IRubyObject ip_port(ThreadContext context) {
        return context.runtime.newFixnum();
    }
    @JRubyMethod(name = "ipv4_private?", notImplemented = true)
    public IRubyObject ipv4_private_p(ThreadContext context) {
        // unimplemented
        return context.nil;
    }
    @JRubyMethod(name = "ipv4_loopback?")
    public IRubyObject ipv4_loopback_p(ThreadContext context) {
        return context.runtime.newBoolean(.isLoopbackAddress());
    }
    @JRubyMethod(name = "ipv4_multicast?")
    public IRubyObject ipv4_multicast_p(ThreadContext context) {
        return context.runtime.newBoolean(.isMulticastAddress());
    }
    @JRubyMethod(name = "ipv6_unspecified?", notImplemented = true)
    public IRubyObject ipv6_unspecified_p(ThreadContext context) {
        // unimplemented
        return context.nil;
    }
    @JRubyMethod(name = "ipv6_loopback?")
    public IRubyObject ipv6_loopback_p(ThreadContext context) {
        return context.runtime.newBoolean(.isLoopbackAddress());
    }
    @JRubyMethod(name = "ipv6_multicast?")
    public IRubyObject ipv6_multicast_p(ThreadContext context) {
        return context.runtime.newBoolean(.isMulticastAddress());
    }
    @JRubyMethod(name = "ipv6_linklocal?")
    public IRubyObject ipv6_linklocal_p(ThreadContext context) {
        return context.runtime.newBoolean(.isLinkLocalAddress());
    }
    @JRubyMethod(name = "ipv6_sitelocal?")
    public IRubyObject ipv6_sitelocal_p(ThreadContext context) {
        return context.runtime.newBoolean(.isSiteLocalAddress());
    }
    @JRubyMethod(name = "ipv6_v4mapped?", notImplemented = true)
    public IRubyObject ipv6_v4mapped_p(ThreadContext context) {
        // unimplemented
        return context.nil;
    }
    @JRubyMethod(name = "ipv6_v4compat?")
    public IRubyObject ipv6_v4compat_p(ThreadContext context) {
        if (!( instanceof Inet6Address)) return context.runtime.getFalse();
        return context.runtime.newBoolean(((Inet6Address)).isIPv4CompatibleAddress());
    }
    @JRubyMethod(name = "ipv6_mc_nodelocal?")
    public IRubyObject ipv6_mc_nodelocal_p(ThreadContext context) {
        return context.runtime.newBoolean(.isMCNodeLocal());
    }
    @JRubyMethod(name = "ipv6_mc_linklocal?")
    public IRubyObject ipv6_mc_linklocal_p(ThreadContext context) {
        return context.runtime.newBoolean(.isMCLinkLocal());
    }
    @JRubyMethod(name = "ipv6_mc_sitelocal?")
    public IRubyObject ipv6_mc_sitelocal_p(ThreadContext context) {
        return context.runtime.newBoolean(.isMCSiteLocal());
    }
    @JRubyMethod(name = "ipv6_mc_orglocal?")
    public IRubyObject ipv6_mc_orglocal_p(ThreadContext context) {
        return context.runtime.newBoolean(.isMCOrgLocal());
    }
    @JRubyMethod(name = "ipv6_mc_global?")
    public IRubyObject ipv6_mc_global_p(ThreadContext context) {
        return context.runtime.newBoolean(.isMCGlobal());
    }
    @JRubyMethod(notImplemented = true)
    public IRubyObject ipv6_to_ipv4(ThreadContext context) {
        // unimplemented
        return context.nil;
    }
    @JRubyMethod(notImplemented = true)
    public IRubyObject unix_path(ThreadContext context) {
        // unimplemented
        return context.nil;
    }
    @JRubyMethod(name = {"to_sockaddr""to_s"}, notImplemented = true)
    public IRubyObject to_sockaddr(ThreadContext context) {
        // unimplemented
        return context.nil;
    }
    @JRubyMethod(rest = true, notImplemented = true)
    public IRubyObject getnameinfo(ThreadContext contextIRubyObject[] args) {
        // unimplemented
        return context.nil;
    }
    @JRubyMethod(notImplemented = true)
    public IRubyObject marshal_dump(ThreadContext context) {
        // unimplemented
        return context.nil;
    }
    @JRubyMethod(notImplemented = true)
    public IRubyObject marshal_load(ThreadContext contextIRubyObject arg) {
        // unimplemented
        return context.nil;
    }
    private InetAddress inetAddress;
    private int port;
    private ProtocolFamily pfamily;
    private AddressFamily afamily;
    private Sock sock;
    private SocketType socketType;
New to GrepCode? Check out our FAQ X