HEX
Server: Apache
System: Linux s198.coreserver.jp 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: nagasaki (10062)
PHP: 7.1.33
Disabled: NONE
Upload Files
File: //usr/local/rvm/gems/ruby-2.6.8/doc/nio4r-2.5.8/ri/ext/nio4r/org/nio4r/page-Nio4r_java.ri
U:RDoc::TopLevel[	iI"#ext/nio4r/org/nio4r/Nio4r.java:ETcRDoc::Parser::Simpleo:RDoc::Markup::Document:@parts[o:RDoc::Markup::Paragraph;[I"package org.nio4r;;To:RDoc::Markup::BlankLineo;	;[I"1import java.nio.channels.SelectableChannel; ;TI",import java.nio.channels.SelectionKey; ;TI",import java.nio.channels.SocketChannel;;T@o;	;[I"import org.jruby.Ruby; ;TI"!import org.jruby.RubyClass; ;TI""import org.jruby.RubyModule; ;TI"/import org.jruby.runtime.ObjectAllocator; ;TI",import org.jruby.runtime.load.Library; ;TI"2import org.jruby.runtime.builtin.IRubyObject;;T@o;	;[I""import org.nio4r.ByteBuffer; ;TI"import org.nio4r.Monitor; ;TI"import org.nio4r.Selector;;T@o;	;[I",public class Nio4r implements Library {;To:RDoc::Markup::Verbatim;[ZI"private Ruby ruby;
;TI"
;TI"6public void load(final Ruby ruby, boolean bln) {
;TI"    this.ruby = ruby;
;TI"
;TI"4    RubyModule nio = ruby.defineModule("NIO");
;TI"
;TI"j    RubyClass selector = ruby.defineClassUnder("Selector", ruby.getObject(), new ObjectAllocator() {
;TI"D        public IRubyObject allocate(Ruby ruby, RubyClass rc) {
;TI"0            return new Selector(ruby, rc);
;TI"        }
;TI"    }, nio);
;TI"
;TI":    selector.defineAnnotatedMethods(Selector.class);
;TI"
;TI"h    RubyClass monitor = ruby.defineClassUnder("Monitor", ruby.getObject(), new ObjectAllocator() {
;TI"D        public IRubyObject allocate(Ruby ruby, RubyClass rc) {
;TI"/            return new Monitor(ruby, rc);
;TI"        }
;TI"    }, nio);
;TI"
;TI"8    monitor.defineAnnotatedMethods(Monitor.class);
;TI"
;TI"n    RubyClass byteBuffer = ruby.defineClassUnder("ByteBuffer", ruby.getObject(), new ObjectAllocator() {
;TI"D        public IRubyObject allocate(Ruby ruby, RubyClass rc) {
;TI"2            return new ByteBuffer(ruby, rc);
;TI"        }
;TI"    }, nio);
;TI"
;TI">    byteBuffer.defineAnnotatedMethods(ByteBuffer.class);
;TI"9    byteBuffer.includeModule(ruby.getEnumerable());
;TI"
;TI"s    ruby.defineClassUnder("OverflowError",  ruby.getIOError(), ruby.getIOError().getAllocator(), byteBuffer);
;TI"s    ruby.defineClassUnder("UnderflowError", ruby.getIOError(), ruby.getIOError().getAllocator(), byteBuffer);
;TI"s    ruby.defineClassUnder("MarkUnsetError", ruby.getIOError(), ruby.getIOError().getAllocator(), byteBuffer);
;TI"}
;TI"
;TI"ipublic static int symbolToInterestOps(Ruby ruby, SelectableChannel channel, IRubyObject interest) {
;TI"/    if(interest == ruby.newSymbol("r")) {
;TI"F        if((channel.validOps() & SelectionKey.OP_ACCEPT) != 0) {
;TI".          return SelectionKey.OP_ACCEPT;
;TI"        } else {
;TI",          return SelectionKey.OP_READ;
;TI"        }
;TI"6    } else if(interest == ruby.newSymbol("w")) {
;TI"_        if(channel instanceof SocketChannel && !((SocketChannel)channel).isConnected()) {
;TI"1            return SelectionKey.OP_CONNECT;
;TI"        } else {
;TI"/            return SelectionKey.OP_WRITE;
;TI"        }
;TI"7    } else if(interest == ruby.newSymbol("rw")) {
;TI""        int interestOps = 0;
;TI"
;TI"Z           nio4r emulates the POSIX behavior, which is sloppy about allowed modes   
;TI"_        if((channel.validOps() & (SelectionKey.OP_READ | SelectionKey.OP_ACCEPT)) != 0) {
;TI"Y            interestOps |= symbolToInterestOps(ruby, channel, ruby.newSymbol("r"));
;TI"        }
;TI"
;TI"a        if((channel.validOps() & (SelectionKey.OP_WRITE | SelectionKey.OP_CONNECT)) != 0) {
;TI"Y            interestOps |= symbolToInterestOps(ruby, channel, ruby.newSymbol("w"));
;TI"        }
;TI"
;TI"!        return interestOps;
;TI"    } else {
;TI"P        throw ruby.newArgumentError("invalid interest type: " + interest);
;TI"    }
;TI"}
;TI"
;TI"Qpublic static IRubyObject interestOpsToSymbol(Ruby ruby, int interestOps) {
;TI"    switch(interestOps) {
;TI"(        case SelectionKey.OP_READ:
;TI"*        case SelectionKey.OP_ACCEPT:
;TI"-            return ruby.newSymbol("r");
;TI")        case SelectionKey.OP_WRITE:
;TI"+        case SelectionKey.OP_CONNECT:
;TI"-            return ruby.newSymbol("w");
;TI"B        case SelectionKey.OP_READ | SelectionKey.OP_CONNECT:
;TI"@        case SelectionKey.OP_READ | SelectionKey.OP_WRITE:
;TI".            return ruby.newSymbol("rw");
;TI"        case 0:
;TI"'            return ruby.getNil();
;TI"        default:
;TI"Q            throw ruby.newArgumentError("unknown interest op combination");
;TI"    }
;TI"}
;T:@format0o;	;[I"};T:
@file@:0@omit_headings_from_table_of_contents_below0