Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.ext.socket;
  
  import org.jruby.Ruby;
 
 
 public class Option extends RubyObject {
     public static void createOption(Ruby runtime) {
         RubyClass addrinfo = runtime.getClass("Socket").defineClassUnder(
                 "Option",
                 runtime.getObject(),
                 new ObjectAllocator() {
                     public IRubyObject allocate(Ruby runtimeRubyClass klazz) {
                         return new Option(runtimeklazz);
                     }
                 });
 
         addrinfo.defineAnnotatedMethods(Option.class);
     }
 
     public Option(Ruby runtimeRubyClass klass) {
         super(runtimeklass);
     }
 
     public Option(Ruby runtimeProtocolFamily familySocketLevel levelSocketOption optionint data) {
         this(runtime, (RubyClass)runtime.getClassFromPath("Socket::Option"), familyleveloptiondata);
     }
 
     public Option(Ruby runtimeRubyClass klassProtocolFamily familySocketLevel levelSocketOption optionint data) {
         super(runtimeklass);
         
         this. = family;
         this. = level;
         this. = option;
         this. = data;
         ByteList result = new ByteList(4);
         this. = Pack.packInt_i(resultdata);
     }
     
     @JRubyMethod(required = 4)
     public IRubyObject initialize(ThreadContext contextIRubyObject[] args) {
          = ProtocolFamily.valueOf(args[0].convertToInteger().getLongValue());
          = SocketLevel.valueOf(args[1].convertToInteger().getLongValue());
          = SocketOption.valueOf(args[2].convertToInteger().getLongValue());
          = args[3].convertToString().getByteList();
          = Pack.unpackInt_i(ByteBuffer.wrap(.bytes()));
         return context.nil;
     }
     
     @JRubyMethod
     public IRubyObject family(ThreadContext context) {
         return context.runtime.newFixnum(.longValue());
     }
 
     @JRubyMethod
     public IRubyObject level(ThreadContext context) {
         return context.runtime.newFixnum(.longValue());
     }
 
     @JRubyMethod
     public IRubyObject optname(ThreadContext context) {
         return context.runtime.newFixnum(.longValue());
     }
 
     @JRubyMethod
     public IRubyObject data(ThreadContext context) {
         return RubyString.newString(context.runtime).freeze(context);
     }
 
     // rb_sockopt_inspect
     @JRubyMethod
     public IRubyObject inspect(ThreadContext context) {
         StringBuffer buf = new StringBuffer("#<");
 
         buf
                 .append(.getRealClass().getName())
                 .append(" ")
                 .append(noPrefix());
 
         if ( == .) {
             buf
                     .append(" SOCKET ")
                    .append(noPrefix());
        } else if ( == .) {
            buf
                    .append(" level:")
                    .append(.longValue())
                    .append(" ")
                    .append(noPrefix());
        } else {
            buf
                    .append(" level:")
                    .append(.description())
                    .append(" ")
                    .append(noPrefix());
        }
        buf
                .append(" ")
                .append(optionValue())
                .append(">");
        return context.runtime.newString(buf.toString());
    }
    private String noPrefix(ProtocolFamily family) {
        return family.description().substring("PF_".length());
    }
    private String noPrefix(SocketOption option) {
        return option.description().substring("SO_".length());
    }
    // from rb_sockopt_inspect
    private String optionValue() {
        switch () {
            case :
            case :
            case :
            case :
            case :
            case :
            case :
            case :
            case :
            case :
            case :
                return String.valueOf();
            case :
                return  == -1 ? "off" :
                         == 0 ? "on" :
                                "on(" +  + ")";
            case :
            case :
                return Sprintf.getNumberFormat(Locale.getDefault()).format( / 1000.0);
            case :
                return Errno.valueOf().description();
            case :
                return Sock.valueOf().description();
        }
        return "";
    }
    @JRubyMethod(meta = true)
    public IRubyObject rb_int(ThreadContext contextIRubyObject self) {
        return context.nil;
    }
    
    public IRubyObject rb_int(ThreadContext context) {
        return context.nil;
    }
    @JRubyMethod(meta = true)
    public IRubyObject bool(ThreadContext contextIRubyObject self) {
        return context.nil;
    }
    public IRubyObject bool(ThreadContext context) {
        return context.nil;
    }
    @JRubyMethod(meta = true)
    public IRubyObject linger(ThreadContext contextIRubyObject self) {
        return context.nil;
    }
    public IRubyObject linger(ThreadContext context) {
        return context.nil;
    }
    public IRubyObject unpack(ThreadContext contextIRubyObject arg0) {
        return Pack.unpack(context.runtimearg0.convertToString().getByteList());
    }
    public IRubyObject to_s(ThreadContext context) {
        return RubyString.newString(context.runtime);
    }
    private ProtocolFamily family;
    private SocketLevel level;
    private SocketOption option;
    private ByteList data;
    private long intData;
New to GrepCode? Check out our FAQ X