You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by bl...@apache.org on 2004/12/14 23:00:07 UTC
svn commit: r111884 - in incubator/directory/network/trunk/sedang/src: java/org/apache/directory/seda test/org/apache/directory/seda/output/test test/org/apache/directory/seda/test
Author: bloritsch
Date: Tue Dec 14 14:00:06 2004
New Revision: 111884
URL: http://svn.apache.org/viewcvs?view=rev&rev=111884
Log:
Some more clean up, but its not listening quite yet....
Modified:
incubator/directory/network/trunk/sedang/src/java/org/apache/directory/seda/SEDAServer.java
incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/output/test/TestWriter.java
incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/test/TestSEDAServer.java
Modified: incubator/directory/network/trunk/sedang/src/java/org/apache/directory/seda/SEDAServer.java
Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/sedang/src/java/org/apache/directory/seda/SEDAServer.java?view=diff&rev=111884&p1=incubator/directory/network/trunk/sedang/src/java/org/apache/directory/seda/SEDAServer.java&r1=111883&p2=incubator/directory/network/trunk/sedang/src/java/org/apache/directory/seda/SEDAServer.java&r2=111884
==============================================================================
--- incubator/directory/network/trunk/sedang/src/java/org/apache/directory/seda/SEDAServer.java (original)
+++ incubator/directory/network/trunk/sedang/src/java/org/apache/directory/seda/SEDAServer.java Tue Dec 14 14:00:06 2004
@@ -51,6 +51,7 @@
private final ProtocolRouter m_router;
private final ConnectSource m_connect;
private final Map m_protocols;
+ private final Map m_connections;
private SEDAServer() throws IOException
{
@@ -71,6 +72,7 @@
m_manager.register( m_writer );
m_protocols = new HashMap();
+ m_connections = new HashMap();
}
public static SEDAServer getServer() throws IOException
@@ -128,11 +130,13 @@
public void addProtocolHandler( final int port, final ProtocolProvider handler)
throws IOException
{
+ final InetSocketAddress key = new InetSocketAddress(port);
final ServerSocketChannel channel = ServerSocketChannel.open();
channel.configureBlocking( false );
- channel.socket().bind( new InetSocketAddress(port) );
+ channel.socket().bind( key );
m_connect.listen( channel );
+ m_connections.put(key, channel);
m_router.addPipe( String.valueOf(port), new DefaultPipe() );
final DecoderStage decoder = new DecoderStage(handler);
@@ -152,12 +156,19 @@
PipelineUtil.connectStage( encoder, m_writer );
- m_protocols.put( String.valueOf(port), new ProtocolPipeline(decoder, request, encoder));
+ m_protocols.put( key, new ProtocolPipeline(decoder, request, encoder));
}
public void removeProtocolHandler( final int port )
{
- final ProtocolPipeline pipeline = (ProtocolPipeline)m_protocols.remove(String.valueOf( port ) );
+ final InetSocketAddress key = new InetSocketAddress(port);
+ final ServerSocketChannel channel = (ServerSocketChannel)m_connections.remove( key );
+ final ProtocolPipeline pipeline = (ProtocolPipeline)m_protocols.remove( key );
+
+ if ( null != channel )
+ {
+ m_connect.unlisten( channel );
+ }
if ( null != pipeline )
{
Modified: incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/output/test/TestWriter.java
Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/output/test/TestWriter.java?view=diff&rev=111884&p1=incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/output/test/TestWriter.java&r1=111883&p2=incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/output/test/TestWriter.java&r2=111884
==============================================================================
--- incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/output/test/TestWriter.java (original)
+++ incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/output/test/TestWriter.java Tue Dec 14 14:00:06 2004
@@ -89,7 +89,8 @@
{
final NetworkEvent event = new NetworkEvent(m_clientChannel);
event.setBuffer( BufferPool.getBuffer() );
- event.getBuffer().put( "test".getBytes() ).flip();
+ event.getBuffer().put( "test".getBytes() );
+ event.getBuffer().flip();
m_writer.handleEvent( event );
final ByteBuffer buffer = ByteBuffer.allocate( 20 );
Modified: incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/test/TestSEDAServer.java
Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/test/TestSEDAServer.java?view=diff&rev=111884&p1=incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/test/TestSEDAServer.java&r1=111883&p2=incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/test/TestSEDAServer.java&r2=111884
==============================================================================
--- incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/test/TestSEDAServer.java (original)
+++ incubator/directory/network/trunk/sedang/src/test/org/apache/directory/seda/test/TestSEDAServer.java Tue Dec 14 14:00:06 2004
@@ -20,8 +20,10 @@
import org.apache.directory.seda.SEDAServer;
import org.apache.directory.seda.mocks.MockProtocolProvider;
import org.apache.directory.seda.input.Firewall;
+import org.apache.protocol.bufferpool.BufferPool;
import java.nio.channels.SocketChannel;
+import java.nio.ByteBuffer;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.InetAddress;
@@ -84,9 +86,35 @@
public void testConnection() throws IOException
{
final SEDAServer server = SEDAServer.getServer();
- server.addProtocolHandler( PORT, new MockProtocolProvider() );
+ final SocketChannel client = SocketChannel.open();
+
+ try
+ {
+ server.addProtocolHandler( PORT, new MockProtocolProvider() );
+
+ client.configureBlocking( true );
+ client.connect( new InetSocketAddress(InetAddress.getLocalHost(), PORT));
+
+ ByteBuffer buffer = BufferPool.getBuffer();
+ buffer.put( "test".getBytes() );
+ buffer.flip();
+
+ client.write( buffer );
+ BufferPool.putBuffer( buffer );
- // do something
- server.removeProtocolHandler( PORT );
+ buffer = BufferPool.getBuffer();
+ client.read( buffer );
+ client.close();
+ buffer.flip();
+
+ assertEquals( "test", buffer.asCharBuffer().toString() );
+
+ BufferPool.putBuffer(buffer);
+ }
+ finally
+ {
+ server.removeProtocolHandler( PORT );
+ if (null != client) client.close();
+ }
}
}