org.apache.mina.core.polling
Class AbstractPollingConnectionlessIoAcceptor<T extends AbstractIoSession,H>

java.lang.Object
  extended by org.apache.mina.core.service.AbstractIoService
      extended by org.apache.mina.core.service.AbstractIoAcceptor
          extended by org.apache.mina.core.polling.AbstractPollingConnectionlessIoAcceptor<T,H>
All Implemented Interfaces:
IoAcceptor, IoService
Direct Known Subclasses:
NioDatagramAcceptor

public abstract class AbstractPollingConnectionlessIoAcceptor<T extends AbstractIoSession,H>
extends AbstractIoAcceptor

TODO Add documentation IoAcceptor for datagram transport (UDP/IP).

Author:
Apache MINA Project

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.mina.core.service.AbstractIoAcceptor
AbstractIoAcceptor.AcceptorOperationFuture
 
Nested classes/interfaces inherited from class org.apache.mina.core.service.AbstractIoService
AbstractIoService.ServiceOperationFuture
 
Field Summary
 
Fields inherited from class org.apache.mina.core.service.AbstractIoAcceptor
bindLock
 
Fields inherited from class org.apache.mina.core.service.AbstractIoService
disposalLock
 
Constructor Summary
protected AbstractPollingConnectionlessIoAcceptor(IoSessionConfig sessionConfig)
          Creates a new instance.
protected AbstractPollingConnectionlessIoAcceptor(IoSessionConfig sessionConfig, java.util.concurrent.Executor executor)
          Creates a new instance.
 
Method Summary
protected  java.util.Set<java.net.SocketAddress> bindInternal(java.util.List<? extends java.net.SocketAddress> localAddresses)
          Starts the acceptor, and register the given addresses
protected abstract  void close(H handle)
           
protected abstract  void destroy()
           
protected  IoFuture dispose0()
          Implement this method to release any acquired resources.
 IoSessionRecycler getSessionRecycler()
           
protected abstract  void init()
           
protected abstract  boolean isReadable(H handle)
           
protected abstract  boolean isWritable(H handle)
           
protected abstract  java.net.SocketAddress localAddress(H handle)
           
protected abstract  T newSession(IoProcessor<T> processor, H handle, java.net.SocketAddress remoteAddress)
           
 IoSession newSession(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress)
          (Optional) Returns an IoSession that is bound to the specified localAddress and the specified remoteAddress which reuses the local address that is already bound by this service.
protected abstract  H open(java.net.SocketAddress localAddress)
           
protected abstract  java.net.SocketAddress receive(H handle, IoBuffer buffer)
           
protected abstract  int select()
           
protected abstract  int select(int timeout)
           
protected abstract  java.util.Iterator<H> selectedHandles()
           
protected abstract  int send(T session, IoBuffer buffer, java.net.SocketAddress remoteAddress)
           
protected abstract  void setInterestedInWrite(T session, boolean interested)
           
 void setSessionRecycler(IoSessionRecycler sessionRecycler)
           
protected  void unbind0(java.util.List<? extends java.net.SocketAddress> localAddresses)
          Implement this method to perform the actual unbind operation.
protected abstract  void wakeup()
           
 
Methods inherited from class org.apache.mina.core.service.AbstractIoAcceptor
bind, bind, bind, bind, getDefaultLocalAddress, getDefaultLocalAddresses, getLocalAddress, getLocalAddresses, isCloseOnDeactivation, setCloseOnDeactivation, setDefaultLocalAddress, setDefaultLocalAddresses, setDefaultLocalAddresses, setDefaultLocalAddresses, toString, unbind, unbind, unbind, unbind
 
Methods inherited from class org.apache.mina.core.service.AbstractIoService
addListener, broadcast, dispose, executeWorker, executeWorker, finishSessionInitialization0, getActivationTime, getFilterChain, getFilterChainBuilder, getHandler, getListeners, getManagedSessionCount, getManagedSessions, getScheduledWriteBytes, getScheduledWriteMessages, getSessionConfig, getSessionDataStructureFactory, getStatistics, initSession, isActive, isDisposed, isDisposing, removeListener, setFilterChainBuilder, setHandler, setSessionDataStructureFactory
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.mina.core.service.IoService
addListener, broadcast, dispose, getActivationTime, getFilterChain, getFilterChainBuilder, getHandler, getManagedSessionCount, getManagedSessions, getScheduledWriteBytes, getScheduledWriteMessages, getSessionConfig, getSessionDataStructureFactory, getStatistics, getTransportMetadata, isActive, isDisposed, isDisposing, removeListener, setFilterChainBuilder, setHandler, setSessionDataStructureFactory
 

Constructor Detail

AbstractPollingConnectionlessIoAcceptor

protected AbstractPollingConnectionlessIoAcceptor(IoSessionConfig sessionConfig)
Creates a new instance.


AbstractPollingConnectionlessIoAcceptor

protected AbstractPollingConnectionlessIoAcceptor(IoSessionConfig sessionConfig,
                                                  java.util.concurrent.Executor executor)
Creates a new instance.

Method Detail

init

protected abstract void init()
                      throws java.lang.Exception
Throws:
java.lang.Exception

destroy

protected abstract void destroy()
                         throws java.lang.Exception
Throws:
java.lang.Exception

select

protected abstract int select()
                       throws java.lang.Exception
Throws:
java.lang.Exception

select

protected abstract int select(int timeout)
                       throws java.lang.Exception
Throws:
java.lang.Exception

wakeup

protected abstract void wakeup()

selectedHandles

protected abstract java.util.Iterator<H> selectedHandles()

open

protected abstract H open(java.net.SocketAddress localAddress)
                   throws java.lang.Exception
Throws:
java.lang.Exception

close

protected abstract void close(H handle)
                       throws java.lang.Exception
Throws:
java.lang.Exception

localAddress

protected abstract java.net.SocketAddress localAddress(H handle)
                                                throws java.lang.Exception
Throws:
java.lang.Exception

isReadable

protected abstract boolean isReadable(H handle)

isWritable

protected abstract boolean isWritable(H handle)

receive

protected abstract java.net.SocketAddress receive(H handle,
                                                  IoBuffer buffer)
                                           throws java.lang.Exception
Throws:
java.lang.Exception

send

protected abstract int send(T session,
                            IoBuffer buffer,
                            java.net.SocketAddress remoteAddress)
                     throws java.lang.Exception
Throws:
java.lang.Exception

newSession

protected abstract T newSession(IoProcessor<T> processor,
                                H handle,
                                java.net.SocketAddress remoteAddress)
                                                   throws java.lang.Exception
Throws:
java.lang.Exception

setInterestedInWrite

protected abstract void setInterestedInWrite(T session,
                                             boolean interested)
                                      throws java.lang.Exception
Throws:
java.lang.Exception

dispose0

protected IoFuture dispose0()
                     throws java.lang.Exception
Implement this method to release any acquired resources. This method is invoked only once by AbstractIoService.dispose().

Specified by:
dispose0 in class AbstractIoService
Throws:
java.lang.Exception

bindInternal

protected final java.util.Set<java.net.SocketAddress> bindInternal(java.util.List<? extends java.net.SocketAddress> localAddresses)
                                                            throws java.lang.Exception
Starts the acceptor, and register the given addresses

Specified by:
bindInternal in class AbstractIoAcceptor
Returns:
the Set of the local addresses which is bound actually
Throws:
java.lang.Exception

unbind0

protected final void unbind0(java.util.List<? extends java.net.SocketAddress> localAddresses)
                      throws java.lang.Exception
Implement this method to perform the actual unbind operation.

Specified by:
unbind0 in class AbstractIoAcceptor
Throws:
java.lang.Exception

newSession

public final IoSession newSession(java.net.SocketAddress remoteAddress,
                                  java.net.SocketAddress localAddress)
(Optional) Returns an IoSession that is bound to the specified localAddress and the specified remoteAddress which reuses the local address that is already bound by this service.

This operation is optional. Please throw UnsupportedOperationException if the transport type doesn't support this operation. This operation is usually implemented for connectionless transport types.


getSessionRecycler

public final IoSessionRecycler getSessionRecycler()

setSessionRecycler

public final void setSessionRecycler(IoSessionRecycler sessionRecycler)