Top Inners Fields Constructors Methods
org.jruby.util.io

public Class OpenFile

extends Object
implements Finalizable
Class Inheritance
All Implemented Interfaces
org.jruby.Finalizable
Imports
java.io.Closeable, .IOException, java.nio.ByteBuffer, java.nio.channels.Channel, .FileChannel, .FileLock, .ReadableByteChannel, .SeekableByteChannel, .SelectableChannel, .SelectionKey, .SocketChannel, .WritableByteChannel, java.util.HashSet, .Set, java.util.concurrent.locks.ReentrantLock, .ReentrantReadWriteLock, jnr.constants.platform.Errno, .OpenFlags, org.jcodings.Encoding, .Ptr, org.jcodings.transcode.EConv, .EConvFlags, .EConvResult, org.jruby.Finalizable, .Ruby, .RubyArgsFile, .RubyBignum, .RubyEncoding, .RubyException, .RubyFixnum, .RubyIO, .RubyIOError, .RubyNumeric, .FiberScheduler, .RubyString, .RubyThread, org.jruby.exceptions.RaiseException, org.jruby.ext.fcntl.FcntlLibrary, org.jruby.platform.Platform, org.jruby.runtime.Helpers, .ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.util.ByteList, .ShellLauncher, .StringSupport, org.jruby.util.cli.Options

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
public static interface

Field Summary

Modifier and TypeField and Description
public static final int
public static final int
protected volatile Set<RubyThread>
public static final int
public final OpenFile.Buffer
public static final int
public volatile FileLock
private final Ptr
public static final int
private static final byte[]
public IOEncodable.ConvConfig
public static final int
public static final int
private ChannelFD
private final boolean
private OpenFile.Finalizer
public final RubyIO
public static final int
private static final int
public static final int
public static final int
private int
private final ReentrantLock
private int
public static final int
public static final int
private boolean
private String
private long
public static final int
public static final OpenFile.Finalizer
PIPE_FINALIZE

Deprecated
public final PosixShim
public static final RubyThread.ReadWrite<ChannelFD>
public static final int
private Process
public static final RubyThread.ReadWrite<ChannelFD>
public final OpenFile.Buffer
pack-priv static final RubyThread.ReadWrite<OpenFile>
public static final int
public EConv
public static final int
private final Ruby
public static final int
private final Ptr
public Closeable
public static final int
public static final int
public static final int
public RubyIO
public static final int
public static final int
public static final int
public final OpenFile.Buffer
public static final int
public volatile ReentrantReadWriteLock
pack-priv static final RubyThread.ReadWrite<OpenFile>
public EConv
public Encoding
public boolean
public int
public IRubyObject
public static final int

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
addBlockingThread(RubyThread
A thread blocking on this IO
thread
)

Add a thread to the list of blocking threads for this IO.

public int
appendline(ThreadContext context, int delim, final ByteList[] strp, final int[] lp, Encoding enc)

public void
public long
binwrite(ThreadContext context, byte[] ptrBytes, int ptr, int len, boolean nosync)
Deprecated

public int
binwriteInt(ThreadContext context, byte[] ptrBytes, int ptr, int len, boolean nosync)

pack-priv static int
binwriteString(OpenFile fptr, byte[] bytes, int start, int length)

public Channel
public void
public void
public void
public void
public void
checkReopenSeek(ThreadContext context, Ruby runtime, long pos)

public void
public void
public void
cleanup(Ruby runtime, boolean noraise)

public void
public void
public void
public void
public static int
public RubyString
public ByteList
doWriteconv(ThreadContext context, byte[] bytes, int start, int length, Encoding encoding)

public Errno
public void
errno(Errno newErrno)

public ChannelFD
fd()

public static void
fdFixCloexec(PosixShim posix, int fd)

public FileChannel
public int
private Object
fillCbuf(ThreadContext context, int ec_flags)

public void
finalize()

Overrides java.lang.Object.finalize.

Implements org.jruby.Finalizable.finalize.

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

public void
finalize(ThreadContext context, boolean noraise)

public void
finalizeFlush(ThreadContext context, boolean noraise)

pack-priv IRubyObject
finishWriteconv(ThreadContext context, boolean noalloc)

private void
public int
public int
private int
private int
public int
fread(ThreadContext context, byte[] buffer, int offset, int size)

public long
fwrite(ThreadContext context, RubyString str, boolean nosync)

public int
fwrite(ThreadContext context, byte[] bytes, int start, int length, Encoding encoding, boolean nosync)

public IRubyObject
getc(ThreadContext context, Encoding enc)

protected Encoding
public int
public OpenFile.Finalizer
public static int
getFModeFromString(String modesString)
Deprecated

public IRubyObject
getlineFast(ThreadContext context, Encoding enc, RubyIO io, boolean chomp)

public int
public int
public String
getModeAsString(Ruby runtime)
Deprecated

public String
public static int
public String
public long
public Process
public static String
public void
public void
incrementLineno(Ruby runtime)
Deprecated

public Encoding
public void
interruptBlockingThreads(ThreadContext context)

Fire an IOError in all threads blocking on this IO object

public int
public int
private int
ioBufread(ThreadContext context, byte[] ptrBytes, int ptr, int len)

pack-priv static boolean
ioEncnameBomP(String name, long len)

public static int
ioFmodeOflags(int fmode)

public static int
ioModestrFmode(Ruby runtime, String modestr)
Deprecated

public static int
public static int
ioModestrOflags(Ruby runtime, String modestr)
Deprecated

public static int
public static String
ioOflagsModestr(Ruby runtime, int oflags)
Deprecated

public static String
ioOflagsModestr(ThreadContext context, int oflags)

public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
public boolean
lock()

public boolean
public void
makeReadConversion(ThreadContext context, int size)

public void
public void
private static int
memchr(byte[] pBytes, int p, int delim, int length)

private static String
MODE_BINARY(int oflags, String a, String b)

public int
public boolean
public void
public boolean
public boolean
public boolean
public static int
preadInternal(ThreadContext context, OpenFile fptr, ChannelFD fd, ByteBuffer buffer, int from, int length)

public String
public static int
pwriteInternal(ThreadContext context, OpenFile fptr, ChannelFD fd, ByteBuffer buffer, int from, int length)

public static long
public static int
rbW32WriteConsole(byte[] bytes, int start, int length, Encoding encoding)

public boolean
public int
public int
public byte[]
public int
public void
public boolean
public boolean
public int
public int
public byte[]
public int
public IRubyObject
readAll(ThreadContext context, int siz, IRubyObject str)

public int
readBufferedData(byte[] ptrBytes, int ptr, int len)

public ReadableByteChannel
public Encoding
readEncoding(Ruby runtime)

public static int
readInternal(ThreadContext context, OpenFile fptr, ChannelFD fd, byte[] bufBytes, int buf, int count)

public static int
readInternal(ThreadContext context, OpenFile fptr, ChannelFD fd, ByteBuffer buffer, int buf, int count)

public int
public boolean
ready(Ruby runtime, RubyThread thread, int ops, long timeout)

Wait until the channel is available for the given operations or the timeout expires.

public boolean
public int
public void
removeBlockingThread(RubyThread
A thread blocking on this IO
thread
)

Remove a thread from the list of blocking threads for this IO.

private static int
searchDelimiter(byte[] pBytes, int p, int delim, int len, Encoding enc)

public long
seek(ThreadContext context, long offset, int whence)

public SeekableByteChannel
public SelectableChannel
private static void
public void
private void
public void
setAutoclose(boolean autoclose)

public void
public void
setBlock(Ruby runtime)

public void
setBlocking(Ruby runtime, boolean blocking)

public void
setBOM(boolean bom)

public void
public void
public void
public void
setLineNumber(int lineNumber)

public void
setMode(int modes)

public void
setNonblock(Ruby runtime)

public void
public void
setPid(long pid)

public void
public void
setSync(boolean sync)

public void
public RubyString
shiftCbuf(ThreadContext context, final int len, final IRubyObject strp)

public RubyString
shiftCbuf(final int len, final RubyString str)

public SocketChannel
pack-priv static RubyIOError
public boolean
swallow(ThreadContext context, int term)

public synchronized long
public int
threadFlock(ThreadContext context, final int lockMode)

public void
public void
public synchronized void
private void
private void
public void
waitForBlockingThreads(ThreadContext context)

Wait until all blocking threads have exited their blocking area.

public boolean
waitReadable(ThreadContext context, long timeout)

public boolean
pack-priv boolean
waitReadable(ThreadContext context, ChannelFD fd)

Logic to match (as well as possible) rb_io_wait_readable from MRI.

public boolean
waitWritable(ThreadContext context, long timeout)

public boolean
private int
public WritableByteChannel
public static int
writeInternal(ThreadContext context, OpenFile fptr, byte[] bufBytes, int buf, int count)

public static int
writeInternal(ThreadContext context, OpenFile fptr, ByteBuffer bufBytes, int buf, int count)

pack-priv int
writeInternal2(ChannelFD fd, byte[] bufBytes, int buf, int count)

private boolean
wsplit()

wsplit mode selects a smaller write size based on the internal buffer of things like pipes, in order to help guarantee it will not block when emptying our write buffer.

Inherited from java.lang.Object:
cloneequalsgetClasshashCodenotifynotifyAlltoStringwaitwaitwait