You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2009/03/22 13:33:54 UTC
svn commit: r757177 - in
/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr:
AprIoProcessor.java AprSocketAcceptor.java AprSocketConnector.java
Author: jvermillard
Date: Sun Mar 22 12:33:54 2009
New Revision: 757177
URL: http://svn.apache.org/viewvc?rev=757177&view=rev
Log:
Added some APR transport javadoc
Modified:
mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java
mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java
mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java
Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java?rev=757177&r1=757176&r2=757177&view=diff
==============================================================================
--- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java (original)
+++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java Sun Mar 22 12:33:54 2009
@@ -60,6 +60,12 @@
private final List<AprSession> polledSessions =
new CircularQueue<AprSession>(POLLSET_SIZE);
+ /**
+ * Create a new instance of {@link AprIoProcessor} with a given Exector for
+ * handling I/Os events.
+ *
+ * @param executor the {@link Executor} for handling I/O events
+ */
public AprIoProcessor(Executor executor) {
super(executor);
@@ -116,6 +122,9 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void dispose0() {
Poll.destroy(pollset);
@@ -124,11 +133,17 @@
Pool.destroy(pool);
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected int select() throws Exception {
return select(Integer.MAX_VALUE);
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected int select(long timeout) throws Exception {
int rv = Poll.poll(pollset, 1000 * timeout, polledSockets, false);
@@ -186,11 +201,17 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected boolean isSelectorEmpty() {
return allSessions.isEmpty();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void wakeup() {
if (toBeWakenUp) {
@@ -204,11 +225,17 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected Iterator<AprSession> allSessions() {
return allSessions.values().iterator();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected Iterator<AprSession> selectedSessions() {
return polledSessions.iterator();
@@ -229,6 +256,9 @@
allSessions.put(s, session);
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void destroy(AprSession session) throws Exception {
if (allSessions.remove(session.getDescriptor()) == null) {
@@ -255,6 +285,9 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected SessionState state(AprSession session) {
long socket = session.getDescriptor();
@@ -267,26 +300,41 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected boolean isReadable(AprSession session) {
return session.isReadable();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected boolean isWritable(AprSession session) {
return session.isWritable();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected boolean isInterestedInRead(AprSession session) {
return session.isInterestedInRead();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected boolean isInterestedInWrite(AprSession session) {
return session.isInterestedInWrite();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void setInterestedInRead(AprSession session, boolean value) throws Exception {
if (session.isInterestedInRead() == value) {
@@ -309,6 +357,9 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void setInterestedInWrite(AprSession session, boolean value) throws Exception {
if (session.isInterestedInWrite() == value) {
@@ -331,6 +382,9 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected int read(AprSession session, IoBuffer buffer) throws Exception {
int bytes;
@@ -359,6 +413,9 @@
return bytes;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected int write(AprSession session, IoBuffer buf, int length) throws Exception {
int writtenBytes;
@@ -385,6 +442,9 @@
return writtenBytes;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected int transferFile(AprSession session, FileRegion region, int length)
throws Exception {
Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java?rev=757177&r1=757176&r2=757177&view=diff
==============================================================================
--- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java (original)
+++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java Sun Mar 22 12:33:54 2009
@@ -28,11 +28,15 @@
import org.apache.mina.core.RuntimeIoException;
import org.apache.mina.core.polling.AbstractPollingIoAcceptor;
+import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.service.IoProcessor;
+import org.apache.mina.core.service.IoService;
+import org.apache.mina.core.service.SimpleIoProcessorPool;
import org.apache.mina.core.service.TransportMetadata;
import org.apache.mina.transport.socket.DefaultSocketSessionConfig;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.SocketSessionConfig;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.apache.mina.util.CircularQueue;
import org.apache.tomcat.jni.Address;
import org.apache.tomcat.jni.Poll;
@@ -41,7 +45,7 @@
import org.apache.tomcat.jni.Status;
/**
- * TODO Add documentation
+ * {@link IoAcceptor} for APR based socket transport (TCP/IP).
*
* @author The Apache MINA Project (dev@mina.apache.org)
* @version $Rev$, $Date$
@@ -68,27 +72,53 @@
private final List<Long> polledHandles =
new CircularQueue<Long>(POLLSET_SIZE);
+ /**
+ * Constructor for {@link AprSocketAcceptor} using default parameters (multiple thread model).
+ */
public AprSocketAcceptor() {
super(new DefaultSocketSessionConfig(), AprIoProcessor.class);
((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
+ /**
+ * Constructor for {@link AprSocketAcceptor} using default parameters, and
+ * given number of {@link AprIoProcessor} for multithreading I/O operations.
+ *
+ * @param processorCount the number of processor to create and place in a
+ * {@link SimpleIoProcessorPool}
+ */
public AprSocketAcceptor(int processorCount) {
super(new DefaultSocketSessionConfig(), AprIoProcessor.class, processorCount);
((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
+ /**
+ * Constructor for {@link AprSocketAcceptor} with default configuration but a
+ * specific {@link AprIoProcessor}, useful for sharing the same processor over multiple
+ * {@link IoService} of the same type.
+ * @param processor the processor to use for managing I/O events
+ */
public AprSocketAcceptor(IoProcessor<AprSession> processor) {
super(new DefaultSocketSessionConfig(), processor);
((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
+ /**
+ * Constructor for {@link AprSocketAcceptor} with a given {@link Executor} for handling
+ * connection events and a given {@link AprIoProcessor} for handling I/O events, useful for
+ * sharing the same processor and executor over multiple {@link IoService} of the same type.
+ * @param executor the executor for connection
+ * @param processor the processor for I/O operations
+ */
public AprSocketAcceptor(Executor executor,
IoProcessor<AprSession> processor) {
super(new DefaultSocketSessionConfig(), executor, processor);
((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected AprSession accept(IoProcessor<AprSession> processor, Long handle) throws Exception {
long s = Socket.accept(handle);
@@ -104,6 +134,9 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected Long open(SocketAddress localAddress) throws Exception {
InetSocketAddress la = (InetSocketAddress) localAddress;
@@ -165,6 +198,9 @@
return handle;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void init() throws Exception {
// initialize a memory pool for APR functions
@@ -195,6 +231,9 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void destroy() throws Exception {
if (wakeupSocket > 0) {
@@ -208,12 +247,18 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected SocketAddress localAddress(Long handle) throws Exception {
long la = Address.get(Socket.APR_LOCAL, handle);
return new InetSocketAddress(Address.getip(la), Address.getInfo(la).port);
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected int select() throws Exception {
int rv = Poll.poll(pollset, Integer.MAX_VALUE, polledSockets, false);
@@ -260,11 +305,17 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected Iterator<Long> selectedHandles() {
return polledHandles.iterator();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void close(Long handle) throws Exception {
Poll.remove(pollset, handle);
@@ -274,6 +325,9 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void wakeup() {
if (toBeWakenUp) {
@@ -287,14 +341,23 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
public int getBacklog() {
return backlog;
}
+ /**
+ * {@inheritDoc}
+ */
public boolean isReuseAddress() {
return reuseAddress;
}
+ /**
+ * {@inheritDoc}
+ */
public void setBacklog(int backlog) {
synchronized (bindLock) {
if (isActive()) {
@@ -306,16 +369,25 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public InetSocketAddress getLocalAddress() {
return (InetSocketAddress) super.getLocalAddress();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public InetSocketAddress getDefaultLocalAddress() {
return (InetSocketAddress) super.getDefaultLocalAddress();
}
+ /**
+ * {@inheritDoc}
+ */
public void setDefaultLocalAddress(InetSocketAddress localAddress) {
super.setDefaultLocalAddress(localAddress);
}
@@ -331,15 +403,26 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
public TransportMetadata getTransportMetadata() {
return AprSocketSession.METADATA;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public SocketSessionConfig getSessionConfig() {
return (SocketSessionConfig) super.getSessionConfig();
}
+ /**
+ * Convert an APR code into an Exception with the corresponding message
+ * @param code error number
+ * @throws IOException the generated exception
+ */
private void throwException(int code) throws IOException {
throw new IOException(
org.apache.tomcat.jni.Error.strerror(-code) +
Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java?rev=757177&r1=757176&r2=757177&view=diff
==============================================================================
--- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java (original)
+++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java Sun Mar 22 12:33:54 2009
@@ -33,7 +33,10 @@
import org.apache.mina.core.RuntimeIoException;
import org.apache.mina.core.polling.AbstractPollingIoConnector;
+import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.service.IoProcessor;
+import org.apache.mina.core.service.IoService;
+import org.apache.mina.core.service.SimpleIoProcessorPool;
import org.apache.mina.core.service.TransportMetadata;
import org.apache.mina.transport.socket.DefaultSocketSessionConfig;
import org.apache.mina.transport.socket.SocketConnector;
@@ -46,7 +49,7 @@
import org.apache.tomcat.jni.Status;
/**
- * {@link IoConnector} for ABR based socket transport (TCP/IP).
+ * {@link IoConnector} for APR based socket transport (TCP/IP).
*
* @author The Apache MINA Project (dev@mina.apache.org)
* @version $Rev$, $Date$
@@ -76,7 +79,7 @@
private volatile ByteBuffer dummyBuffer;
/**
- * TODO : document superclass
+ * Create an {@link AprSocketConnector} with default configuration (multiple thread model).
*/
public AprSocketConnector() {
super(new DefaultSocketSessionConfig(), AprIoProcessor.class);
@@ -84,7 +87,10 @@
}
/**
- * TODO : document superclass
+ * Constructor for {@link AprSocketConnector} with default configuration, and
+ * given number of {@link AprIoProcessor} for multithreading I/O operations
+ * @param processorCount the number of processor to create and place in a
+ * {@link SimpleIoProcessorPool}
*/
public AprSocketConnector(int processorCount) {
super(new DefaultSocketSessionConfig(), AprIoProcessor.class, processorCount);
@@ -92,7 +98,10 @@
}
/**
- * TODO : document superclass
+ * Constructor for {@link AprSocketConnector} with default configuration but a
+ * specific {@link IoProcessor}, useful for sharing the same processor over multiple
+ * {@link IoService} of the same type.
+ * @param processor the processor to use for managing I/O events
*/
public AprSocketConnector(IoProcessor<AprSession> processor) {
super(new DefaultSocketSessionConfig(), processor);
@@ -100,7 +109,11 @@
}
/**
- * TODO : document superclass
+ * Constructor for {@link AprSocketConnector} with a given {@link Executor} for handling
+ * connection events and a given {@link IoProcessor} for handling I/O events, useful for sharing
+ * the same processor and executor over multiple {@link IoService} of the same type.
+ * @param executor the executor for connection
+ * @param processor the processor for I/O operations
*/
public AprSocketConnector(Executor executor, IoProcessor<AprSession> processor) {
super(new DefaultSocketSessionConfig(), executor, processor);
Re: svn commit: r757177 - in /mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr:
AprIoProcessor.java AprSocketAcceptor.java AprSocketConnector.java
Posted by Ashish <pa...@gmail.com>.
Thanks Julien!
I was also working on this. Anyways, shall see if I can add something on top.
- ashish
On Sun, Mar 22, 2009 at 6:03 PM, <jv...@apache.org> wrote:
> Author: jvermillard
> Date: Sun Mar 22 12:33:54 2009
> New Revision: 757177
>
> URL: http://svn.apache.org/viewvc?rev=757177&view=rev
> Log:
> Added some APR transport javadoc
>
> Modified:
> mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java
> mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java
> mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java
>
> Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java
> URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java?rev=757177&r1=757176&r2=757177&view=diff
> ==============================================================================
> --- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java (original)
> +++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprIoProcessor.java Sun Mar 22 12:33:54 2009
> @@ -60,6 +60,12 @@
> private final List<AprSession> polledSessions =
> new CircularQueue<AprSession>(POLLSET_SIZE);
>
> + /**
> + * Create a new instance of {@link AprIoProcessor} with a given Exector for
> + * handling I/Os events.
> + *
> + * @param executor the {@link Executor} for handling I/O events
> + */
> public AprIoProcessor(Executor executor) {
> super(executor);
>
> @@ -116,6 +122,9 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected void dispose0() {
> Poll.destroy(pollset);
> @@ -124,11 +133,17 @@
> Pool.destroy(pool);
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected int select() throws Exception {
> return select(Integer.MAX_VALUE);
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected int select(long timeout) throws Exception {
> int rv = Poll.poll(pollset, 1000 * timeout, polledSockets, false);
> @@ -186,11 +201,17 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected boolean isSelectorEmpty() {
> return allSessions.isEmpty();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected void wakeup() {
> if (toBeWakenUp) {
> @@ -204,11 +225,17 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected Iterator<AprSession> allSessions() {
> return allSessions.values().iterator();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected Iterator<AprSession> selectedSessions() {
> return polledSessions.iterator();
> @@ -229,6 +256,9 @@
> allSessions.put(s, session);
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected void destroy(AprSession session) throws Exception {
> if (allSessions.remove(session.getDescriptor()) == null) {
> @@ -255,6 +285,9 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected SessionState state(AprSession session) {
> long socket = session.getDescriptor();
> @@ -267,26 +300,41 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected boolean isReadable(AprSession session) {
> return session.isReadable();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected boolean isWritable(AprSession session) {
> return session.isWritable();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected boolean isInterestedInRead(AprSession session) {
> return session.isInterestedInRead();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected boolean isInterestedInWrite(AprSession session) {
> return session.isInterestedInWrite();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected void setInterestedInRead(AprSession session, boolean value) throws Exception {
> if (session.isInterestedInRead() == value) {
> @@ -309,6 +357,9 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected void setInterestedInWrite(AprSession session, boolean value) throws Exception {
> if (session.isInterestedInWrite() == value) {
> @@ -331,6 +382,9 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected int read(AprSession session, IoBuffer buffer) throws Exception {
> int bytes;
> @@ -359,6 +413,9 @@
> return bytes;
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected int write(AprSession session, IoBuffer buf, int length) throws Exception {
> int writtenBytes;
> @@ -385,6 +442,9 @@
> return writtenBytes;
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected int transferFile(AprSession session, FileRegion region, int length)
> throws Exception {
>
> Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java
> URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java?rev=757177&r1=757176&r2=757177&view=diff
> ==============================================================================
> --- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java (original)
> +++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java Sun Mar 22 12:33:54 2009
> @@ -28,11 +28,15 @@
>
> import org.apache.mina.core.RuntimeIoException;
> import org.apache.mina.core.polling.AbstractPollingIoAcceptor;
> +import org.apache.mina.core.service.IoAcceptor;
> import org.apache.mina.core.service.IoProcessor;
> +import org.apache.mina.core.service.IoService;
> +import org.apache.mina.core.service.SimpleIoProcessorPool;
> import org.apache.mina.core.service.TransportMetadata;
> import org.apache.mina.transport.socket.DefaultSocketSessionConfig;
> import org.apache.mina.transport.socket.SocketAcceptor;
> import org.apache.mina.transport.socket.SocketSessionConfig;
> +import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> import org.apache.mina.util.CircularQueue;
> import org.apache.tomcat.jni.Address;
> import org.apache.tomcat.jni.Poll;
> @@ -41,7 +45,7 @@
> import org.apache.tomcat.jni.Status;
>
> /**
> - * TODO Add documentation
> + * {@link IoAcceptor} for APR based socket transport (TCP/IP).
> *
> * @author The Apache MINA Project (dev@mina.apache.org)
> * @version $Rev$, $Date$
> @@ -68,27 +72,53 @@
> private final List<Long> polledHandles =
> new CircularQueue<Long>(POLLSET_SIZE);
>
> + /**
> + * Constructor for {@link AprSocketAcceptor} using default parameters (multiple thread model).
> + */
> public AprSocketAcceptor() {
> super(new DefaultSocketSessionConfig(), AprIoProcessor.class);
> ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
> }
>
> + /**
> + * Constructor for {@link AprSocketAcceptor} using default parameters, and
> + * given number of {@link AprIoProcessor} for multithreading I/O operations.
> + *
> + * @param processorCount the number of processor to create and place in a
> + * {@link SimpleIoProcessorPool}
> + */
> public AprSocketAcceptor(int processorCount) {
> super(new DefaultSocketSessionConfig(), AprIoProcessor.class, processorCount);
> ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
> }
>
> + /**
> + * Constructor for {@link AprSocketAcceptor} with default configuration but a
> + * specific {@link AprIoProcessor}, useful for sharing the same processor over multiple
> + * {@link IoService} of the same type.
> + * @param processor the processor to use for managing I/O events
> + */
> public AprSocketAcceptor(IoProcessor<AprSession> processor) {
> super(new DefaultSocketSessionConfig(), processor);
> ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
> }
>
> + /**
> + * Constructor for {@link AprSocketAcceptor} with a given {@link Executor} for handling
> + * connection events and a given {@link AprIoProcessor} for handling I/O events, useful for
> + * sharing the same processor and executor over multiple {@link IoService} of the same type.
> + * @param executor the executor for connection
> + * @param processor the processor for I/O operations
> + */
> public AprSocketAcceptor(Executor executor,
> IoProcessor<AprSession> processor) {
> super(new DefaultSocketSessionConfig(), executor, processor);
> ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected AprSession accept(IoProcessor<AprSession> processor, Long handle) throws Exception {
> long s = Socket.accept(handle);
> @@ -104,6 +134,9 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected Long open(SocketAddress localAddress) throws Exception {
> InetSocketAddress la = (InetSocketAddress) localAddress;
> @@ -165,6 +198,9 @@
> return handle;
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected void init() throws Exception {
> // initialize a memory pool for APR functions
> @@ -195,6 +231,9 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected void destroy() throws Exception {
> if (wakeupSocket > 0) {
> @@ -208,12 +247,18 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected SocketAddress localAddress(Long handle) throws Exception {
> long la = Address.get(Socket.APR_LOCAL, handle);
> return new InetSocketAddress(Address.getip(la), Address.getInfo(la).port);
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected int select() throws Exception {
> int rv = Poll.poll(pollset, Integer.MAX_VALUE, polledSockets, false);
> @@ -260,11 +305,17 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected Iterator<Long> selectedHandles() {
> return polledHandles.iterator();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected void close(Long handle) throws Exception {
> Poll.remove(pollset, handle);
> @@ -274,6 +325,9 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> protected void wakeup() {
> if (toBeWakenUp) {
> @@ -287,14 +341,23 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public int getBacklog() {
> return backlog;
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public boolean isReuseAddress() {
> return reuseAddress;
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public void setBacklog(int backlog) {
> synchronized (bindLock) {
> if (isActive()) {
> @@ -306,16 +369,25 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> public InetSocketAddress getLocalAddress() {
> return (InetSocketAddress) super.getLocalAddress();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> public InetSocketAddress getDefaultLocalAddress() {
> return (InetSocketAddress) super.getDefaultLocalAddress();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public void setDefaultLocalAddress(InetSocketAddress localAddress) {
> super.setDefaultLocalAddress(localAddress);
> }
> @@ -331,15 +403,26 @@
> }
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public TransportMetadata getTransportMetadata() {
> return AprSocketSession.METADATA;
> }
>
> + /**
> + * {@inheritDoc}
> + */
> @Override
> public SocketSessionConfig getSessionConfig() {
> return (SocketSessionConfig) super.getSessionConfig();
> }
>
> + /**
> + * Convert an APR code into an Exception with the corresponding message
> + * @param code error number
> + * @throws IOException the generated exception
> + */
> private void throwException(int code) throws IOException {
> throw new IOException(
> org.apache.tomcat.jni.Error.strerror(-code) +
>
> Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java
> URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java?rev=757177&r1=757176&r2=757177&view=diff
> ==============================================================================
> --- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java (original)
> +++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java Sun Mar 22 12:33:54 2009
> @@ -33,7 +33,10 @@
>
> import org.apache.mina.core.RuntimeIoException;
> import org.apache.mina.core.polling.AbstractPollingIoConnector;
> +import org.apache.mina.core.service.IoConnector;
> import org.apache.mina.core.service.IoProcessor;
> +import org.apache.mina.core.service.IoService;
> +import org.apache.mina.core.service.SimpleIoProcessorPool;
> import org.apache.mina.core.service.TransportMetadata;
> import org.apache.mina.transport.socket.DefaultSocketSessionConfig;
> import org.apache.mina.transport.socket.SocketConnector;
> @@ -46,7 +49,7 @@
> import org.apache.tomcat.jni.Status;
>
> /**
> - * {@link IoConnector} for ABR based socket transport (TCP/IP).
> + * {@link IoConnector} for APR based socket transport (TCP/IP).
> *
> * @author The Apache MINA Project (dev@mina.apache.org)
> * @version $Rev$, $Date$
> @@ -76,7 +79,7 @@
> private volatile ByteBuffer dummyBuffer;
>
> /**
> - * TODO : document superclass
> + * Create an {@link AprSocketConnector} with default configuration (multiple thread model).
> */
> public AprSocketConnector() {
> super(new DefaultSocketSessionConfig(), AprIoProcessor.class);
> @@ -84,7 +87,10 @@
> }
>
> /**
> - * TODO : document superclass
> + * Constructor for {@link AprSocketConnector} with default configuration, and
> + * given number of {@link AprIoProcessor} for multithreading I/O operations
> + * @param processorCount the number of processor to create and place in a
> + * {@link SimpleIoProcessorPool}
> */
> public AprSocketConnector(int processorCount) {
> super(new DefaultSocketSessionConfig(), AprIoProcessor.class, processorCount);
> @@ -92,7 +98,10 @@
> }
>
> /**
> - * TODO : document superclass
> + * Constructor for {@link AprSocketConnector} with default configuration but a
> + * specific {@link IoProcessor}, useful for sharing the same processor over multiple
> + * {@link IoService} of the same type.
> + * @param processor the processor to use for managing I/O events
> */
> public AprSocketConnector(IoProcessor<AprSession> processor) {
> super(new DefaultSocketSessionConfig(), processor);
> @@ -100,7 +109,11 @@
> }
>
> /**
> - * TODO : document superclass
> + * Constructor for {@link AprSocketConnector} with a given {@link Executor} for handling
> + * connection events and a given {@link IoProcessor} for handling I/O events, useful for sharing
> + * the same processor and executor over multiple {@link IoService} of the same type.
> + * @param executor the executor for connection
> + * @param processor the processor for I/O operations
> */
> public AprSocketConnector(Executor executor, IoProcessor<AprSession> processor) {
> super(new DefaultSocketSessionConfig(), executor, processor);
>
>
>
--
thanks
ashish
Blog: http://www.ashishpaliwal.com/blog
My Photo Galleries: http://www.pbase.com/ashishpaliwal