org.jboss.netty.channel
Class AbstractChannel

java.lang.Object
  extended by org.jboss.netty.channel.AbstractChannel
All Implemented Interfaces:
Comparable<Channel>, Channel
Direct Known Subclasses:
AbstractServerChannel

public abstract class AbstractChannel
extends Object
implements Channel

A skeletal Channel implementation.

Version:
$Rev: 2339 $, $Date: 2010-07-07 13:36:25 +0900 (Wed, 07 Jul 2010) $
Author:
The Netty Project, Trustin Lee

Field Summary
 
Fields inherited from interface org.jboss.netty.channel.Channel
OP_NONE, OP_READ, OP_READ_WRITE, OP_WRITE
 
Constructor Summary
protected AbstractChannel(Channel parent, ChannelFactory factory, ChannelPipeline pipeline, ChannelSink sink)
          Creates a new instance.
protected AbstractChannel(Integer id, Channel parent, ChannelFactory factory, ChannelPipeline pipeline, ChannelSink sink)
          (Internal use only) Creates a new temporary instance with the specified ID.
 
Method Summary
 ChannelFuture bind(SocketAddress localAddress)
          Binds this channel to the specified local address asynchronously.
 ChannelFuture close()
          Closes this channel asynchronously.
 int compareTo(Channel o)
          Compares the ID of the two channels.
 ChannelFuture connect(SocketAddress remoteAddress)
          Connects this channel to the specified remote address asynchronously.
 ChannelFuture disconnect()
          Disconnects this channel from the current remote address asynchronously.
 boolean equals(Object o)
          Returns true if and only if the specified object is identical with this channel (i.e: this == o).
 ChannelFuture getCloseFuture()
          Returns the ChannelFuture which will be notified when this channel is closed.
 ChannelFactory getFactory()
          Returns the ChannelFactory which created this channel.
 Integer getId()
          Returns the unique integer ID of this channel.
 int getInterestOps()
          Returns the current interestOps of this channel.
 Channel getParent()
          Returns the parent of this channel.
 ChannelPipeline getPipeline()
          Returns the ChannelPipeline which handles ChannelEvents associated with this channel.
protected  ChannelFuture getSucceededFuture()
          Returns the cached SucceededChannelFuture instance.
protected  ChannelFuture getUnsupportedOperationFuture()
          Returns the FailedChannelFuture whose cause is an UnsupportedOperationException.
 int hashCode()
          Returns the identity hash code of this channel.
 boolean isOpen()
          Returns true if and only if this channel is open.
 boolean isReadable()
          Returns true if and only if the I/O thread will read a message from this channel.
 boolean isWritable()
          Returns true if and only if the I/O thread will perform the requested write operation immediately.
protected  boolean setClosed()
          Marks this channel as closed.
 ChannelFuture setInterestOps(int interestOps)
          Changes the interestOps of this channel asynchronously.
protected  void setInterestOpsNow(int interestOps)
          Sets the interestOps property of this channel immediately.
 ChannelFuture setReadable(boolean readable)
          Suspends or resumes the read operation of the I/O thread asynchronously.
 String toString()
          Returns the String representation of this channel.
 ChannelFuture unbind()
          Unbinds this channel from the current local address asynchronously.
 ChannelFuture write(Object message)
          Sends a message to this channel asynchronously.
 ChannelFuture write(Object message, SocketAddress remoteAddress)
          Sends a message to this channel asynchronously.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.jboss.netty.channel.Channel
getConfig, getLocalAddress, getRemoteAddress, isBound, isConnected
 

Constructor Detail

AbstractChannel

protected AbstractChannel(Channel parent,
                          ChannelFactory factory,
                          ChannelPipeline pipeline,
                          ChannelSink sink)
Creates a new instance.

Parameters:
parent - the parent of this channel. null if there's no parent.
factory - the factory which created this channel
pipeline - the pipeline which is going to be attached to this channel
sink - the sink which will receive downstream events from the pipeline and send upstream events to the pipeline

AbstractChannel

protected AbstractChannel(Integer id,
                          Channel parent,
                          ChannelFactory factory,
                          ChannelPipeline pipeline,
                          ChannelSink sink)
(Internal use only) Creates a new temporary instance with the specified ID.

Parameters:
parent - the parent of this channel. null if there's no parent.
factory - the factory which created this channel
pipeline - the pipeline which is going to be attached to this channel
sink - the sink which will receive downstream events from the pipeline and send upstream events to the pipeline
Method Detail

getId

public final Integer getId()
Description copied from interface: Channel
Returns the unique integer ID of this channel.

Specified by:
getId in interface Channel

getParent

public Channel getParent()
Description copied from interface: Channel
Returns the parent of this channel.

Specified by:
getParent in interface Channel
Returns:
the parent channel. null if this channel does not have a parent channel.

getFactory

public ChannelFactory getFactory()
Description copied from interface: Channel
Returns the ChannelFactory which created this channel.

Specified by:
getFactory in interface Channel

getPipeline

public ChannelPipeline getPipeline()
Description copied from interface: Channel
Returns the ChannelPipeline which handles ChannelEvents associated with this channel.

Specified by:
getPipeline in interface Channel

getSucceededFuture

protected ChannelFuture getSucceededFuture()
Returns the cached SucceededChannelFuture instance.


getUnsupportedOperationFuture

protected ChannelFuture getUnsupportedOperationFuture()
Returns the FailedChannelFuture whose cause is an UnsupportedOperationException.


hashCode

public final int hashCode()
Returns the identity hash code of this channel.

Overrides:
hashCode in class Object

equals

public final boolean equals(Object o)
Returns true if and only if the specified object is identical with this channel (i.e: this == o).

Overrides:
equals in class Object

compareTo

public final int compareTo(Channel o)
Compares the ID of the two channels.

Specified by:
compareTo in interface Comparable<Channel>

isOpen

public boolean isOpen()
Description copied from interface: Channel
Returns true if and only if this channel is open.

Specified by:
isOpen in interface Channel

setClosed

protected boolean setClosed()
Marks this channel as closed. This method is intended to be called by an internal component - please do not call it unless you know what you are doing.

Returns:
true if and only if this channel was not marked as closed yet

bind

public ChannelFuture bind(SocketAddress localAddress)
Description copied from interface: Channel
Binds this channel to the specified local address asynchronously.

Specified by:
bind in interface Channel
Parameters:
localAddress - where to bind
Returns:
the ChannelFuture which will be notified when the bind request succeeds or fails

unbind

public ChannelFuture unbind()
Description copied from interface: Channel
Unbinds this channel from the current local address asynchronously.

Specified by:
unbind in interface Channel
Returns:
the ChannelFuture which will be notified when the unbind request succeeds or fails

close

public ChannelFuture close()
Description copied from interface: Channel
Closes this channel asynchronously. If this channel is bound or connected, it will be disconnected and unbound first. Once a channel is closed, it can not be open again. Calling this method on a closed channel has no effect. Please note that this method always returns the same future instance.

Specified by:
close in interface Channel
Returns:
the ChannelFuture which will be notified when the close request succeeds or fails

getCloseFuture

public ChannelFuture getCloseFuture()
Description copied from interface: Channel
Returns the ChannelFuture which will be notified when this channel is closed. This method always returns the same future instance.

Specified by:
getCloseFuture in interface Channel

connect

public ChannelFuture connect(SocketAddress remoteAddress)
Description copied from interface: Channel
Connects this channel to the specified remote address asynchronously.

Specified by:
connect in interface Channel
Parameters:
remoteAddress - where to connect
Returns:
the ChannelFuture which will be notified when the connection request succeeds or fails

disconnect

public ChannelFuture disconnect()
Description copied from interface: Channel
Disconnects this channel from the current remote address asynchronously.

Specified by:
disconnect in interface Channel
Returns:
the ChannelFuture which will be notified when the disconnection request succeeds or fails

getInterestOps

public int getInterestOps()
Description copied from interface: Channel
Returns the current interestOps of this channel.

Specified by:
getInterestOps in interface Channel
Returns:
Channel.OP_NONE, Channel.OP_READ, Channel.OP_WRITE, or Channel.OP_READ_WRITE

setInterestOps

public ChannelFuture setInterestOps(int interestOps)
Description copied from interface: Channel
Changes the interestOps of this channel asynchronously.

Specified by:
setInterestOps in interface Channel
Parameters:
interestOps - the new interestOps
Returns:
the ChannelFuture which will be notified when the interestOps change request succeeds or fails

setInterestOpsNow

protected void setInterestOpsNow(int interestOps)
Sets the interestOps property of this channel immediately. This method is intended to be called by an internal component - please do not call it unless you know what you are doing.


isReadable

public boolean isReadable()
Description copied from interface: Channel
Returns true if and only if the I/O thread will read a message from this channel. This method is a shortcut to the following code:
 return (getInterestOps() & OP_READ) != 0;
 

Specified by:
isReadable in interface Channel

isWritable

public boolean isWritable()
Description copied from interface: Channel
Returns true if and only if the I/O thread will perform the requested write operation immediately. Any write requests made when this method returns false are queued until the I/O thread is ready to process the queued write requests. This method is a shortcut to the following code:
 return (getInterestOps() & OP_WRITE) == 0;
 

Specified by:
isWritable in interface Channel

setReadable

public ChannelFuture setReadable(boolean readable)
Description copied from interface: Channel
Suspends or resumes the read operation of the I/O thread asynchronously. This method is a shortcut to the following code:
 int interestOps = getInterestOps();
 if (readable) {
     setInterestOps(interestOps | OP_READ);
 } else {
     setInterestOps(interestOps & ~OP_READ);
 }
 

Specified by:
setReadable in interface Channel
Parameters:
readable - true to resume the read operation and false to suspend the read operation
Returns:
the ChannelFuture which will be notified when the interestOps change request succeeds or fails

write

public ChannelFuture write(Object message)
Description copied from interface: Channel
Sends a message to this channel asynchronously. If this channel was created by a connectionless transport (e.g. DatagramChannel) and is not connected yet, you have to call Channel.write(Object, SocketAddress) instead. Otherwise, the write request will fail with NotYetConnectedException and an 'exceptionCaught' event will be triggered.

Specified by:
write in interface Channel
Parameters:
message - the message to write
Returns:
the ChannelFuture which will be notified when the write request succeeds or fails

write

public ChannelFuture write(Object message,
                           SocketAddress remoteAddress)
Description copied from interface: Channel
Sends a message to this channel asynchronously. It has an additional parameter that allows a user to specify where to send the specified message instead of this channel's current remote address. If this channel was created by a connectionless transport (e.g. DatagramChannel) and is not connected yet, you must specify non-null address. Otherwise, the write request will fail with NotYetConnectedException and an 'exceptionCaught' event will be triggered.

Specified by:
write in interface Channel
Parameters:
message - the message to write
remoteAddress - where to send the specified message. This method is identical to Channel.write(Object) if null is specified here.
Returns:
the ChannelFuture which will be notified when the write request succeeds or fails

toString

public String toString()
Returns the String representation of this channel. The returned string contains the ID, local address, and remote address of this channel for easier identification.

Overrides:
toString in class Object


Copyright © 2008-2011 JBoss, a division of Red Hat, Inc.. All Rights Reserved.