# Class Pipe.SourceChannel

java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
java.nio.channels.SelectableChannel
java.nio.channels.spi.AbstractSelectableChannel
java.nio.channels.Pipe.SourceChannel

All Implemented Interfaces:
  `Closeable, AutoCloseable, Channel, InterruptibleChannel, ReadableByteChannel, ScatteringByteChannel`

Enclosing class:
  `Pipe`

public abstract static class Pipe.SourceChannel extends AbstractSelectableChannel implements ReadableByteChannel, ScatteringByteChannel
A channel representing the readable end of a `Pipe`.

Since:
  1.4

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `SourceChannel(SelectorProvider provider)`
  Constructs a new instance of this class.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final int`
  `validOps()`
  Returns an operation set identifying this channel's supported operations.

  ### Methods declared in class AbstractSelectableChannel

  `blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register`
  Modifier and Type
  Method
  Description
  `final Object`
  `blockingLock()`
  Retrieves the object upon which the `configureBlocking` and `register` methods synchronize.
  `final SelectableChannel`
  `configureBlocking(boolean block)`
  Adjusts this channel's blocking mode.
  `protected final void`
  `implCloseChannel()`
  Closes this channel.
  `protected abstract void`
  `implCloseSelectableChannel()`
  Closes this selectable channel.
  `protected abstract void`
  `implConfigureBlocking(boolean block)`
  Adjusts this channel's blocking mode.
  `final boolean`
  `isBlocking()`
  Tells whether or not every I/O operation on this channel will block until it completes.
  `final boolean`
  `isRegistered()`
  Tells whether or not this channel is currently registered with any selectors.
  `final SelectionKey`
  `keyFor(Selector sel)`
  Retrieves the key representing the channel's registration with the given selector.
  `final SelectorProvider`
  `provider()`
  Returns the provider that created this channel.
  `final SelectionKey`
  `register(Selector sel, int ops, Object att)`
  Registers this channel with the given selector, returning a selection key.

  ### Methods declared in class SelectableChannel

  `register`
  Modifier and Type
  Method
  Description
  `final SelectionKey`
  `register(Selector sel, int ops)`
  Registers this channel with the given selector, returning a selection key.

  ### Methods declared in class AbstractInterruptibleChannel

  `begin, close, end, isOpen`
  Modifier and Type
  Method
  Description
  `protected final void`
  `begin()`
  Marks the beginning of an I/O operation that might block indefinitely.
  `final void`
  `close()`
  Closes this channel.
  `protected final void`
  `end(boolean completed)`
  Marks the end of an I/O operation that might block indefinitely.
  `final boolean`
  `isOpen()`
  Tells whether or not this channel is open.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

  ### Methods declared in interface ReadableByteChannel

  `read`
  Modifier and Type
  Method
  Description
  `int`
  `read(ByteBuffer dst)`
  Reads a sequence of bytes from this channel into the given buffer.

  ### Methods declared in interface ScatteringByteChannel

  `read, read`
  Modifier and Type
  Method
  Description
  `long`
  `read(ByteBuffer[] dsts)`
  Reads a sequence of bytes from this channel into the given buffers.
  `long`
  `read(ByteBuffer[] dsts, int offset, int length)`
  Reads a sequence of bytes from this channel into a subsequence of the given buffers.

- ## Constructor Details

  - ### SourceChannel

    protected SourceChannel(SelectorProvider provider)
    Constructs a new instance of this class.
    Parameters:
      `provider` - The selector provider

- ## Method Details

  - ### validOps

    public final int validOps()
    Returns an operation set identifying this channel's supported operations.

    Pipe-source channels only support reading, so this method returns `SelectionKey.OP_READ`.

    Specified by:
      `validOps` in class `SelectableChannel`
    Returns:
      The valid-operation set