You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jg...@apache.org on 2006/10/19 21:10:27 UTC

svn commit: r465736 - in /geronimo/sandbox/gcache/server/src: main/java/org/apache/geronimo/gcache/transports/tcp/ test/java/org/apache/geronimo/gcache/transports/tcp/

Author: jgenender
Date: Thu Oct 19 12:10:26 2006
New Revision: 465736

URL: http://svn.apache.org/viewvc?view=rev&rev=465736
Log:
Tests and code for detecting disconnects

Modified:
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpoint.java
    geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPSocketTransportServer.java
    geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpointTest.java

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java?view=diff&rev=465736&r1=465735&r2=465736
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPCommandVisitor.java Thu Oct 19 12:10:26 2006
@@ -109,12 +109,13 @@
 
 	// Place the raw session in the cache
 	try {
-	    cache.put(new Element(command.getSessionId(), command.getRawSessionFromPayload()));
+	    cache.put(new Element(command.getSessionId(), command
+		    .getRawSessionFromPayload()));
 
 	    // Ack the message
 	    MessageAckCommand ack = new MessageAckCommand();
 	    ack.setMessageId(command.getCommandId());
-	    if (sess != null) //This line is for unit testing
+	    if (sess != null)
 		sess.write(ack);
 
 	} catch (IOException e) {
@@ -173,7 +174,8 @@
 	BulkSendCommand bulk = new BulkSendCommand();
 	bulk.setNumberOfCommands(cache.getSize());
 	try {
-	    sess.write(bulk);
+	    if (sess != null)
+		sess.write(bulk);
 	    
 	    for (Object key : (List<Object>) cache.getKeys()) {
 		Element element = cache.get(key);
@@ -196,7 +198,8 @@
 		}
 		
 		//Send the packet.  If there is a failure just abort
-		sess.write(newCommand);
+		if (sess != null)
+		    sess.write(newCommand);
 	    }
 	    
 	    

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpoint.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpoint.java?view=diff&rev=465736&r1=465735&r2=465736
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpoint.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpoint.java Thu Oct 19 12:10:26 2006
@@ -34,7 +34,9 @@
 
     @Override
     public boolean equals(Object obj) {
-	return ioSession.equals(obj);
+	TCPEndpoint endpoint = (TCPEndpoint) obj;
+	boolean blah = ioSession.equals(endpoint.ioSession);
+	return ioSession.equals(endpoint.ioSession);
     }
 
     @Override

Modified: geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPSocketTransportServer.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPSocketTransportServer.java?view=diff&rev=465736&r1=465735&r2=465736
==============================================================================
--- geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPSocketTransportServer.java (original)
+++ geronimo/sandbox/gcache/server/src/main/java/org/apache/geronimo/gcache/transports/tcp/TCPSocketTransportServer.java Thu Oct 19 12:10:26 2006
@@ -23,6 +23,7 @@
 import org.apache.geronimo.gcache.transports.TransportServer;
 import org.apache.mina.common.IoAcceptor;
 import org.apache.mina.common.ThreadModel;
+import org.apache.mina.filter.LoggingFilter;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.transport.socket.nio.SocketAcceptor;
 import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;
@@ -45,10 +46,8 @@
 	acceptor = new SocketAcceptor();
         SocketAcceptorConfig cfg = new SocketAcceptorConfig();
         cfg.setReuseAddress( true );
-        cfg.getFilterChain().addLast(
-                "protocolFilter",
-                new ProtocolCodecFilter( new TCPCommandProtocolCodecFactory() ) );
-        cfg.setThreadModel(ThreadModel.MANUAL);
+        cfg.getFilterChain().addLast( "protocolFilter", new ProtocolCodecFilter( new TCPCommandProtocolCodecFactory() ) );
+        cfg.getFilterChain().addLast( "logFilter", new LoggingFilter() );
 
         acceptor.bind( inet, new TCPSocketHandler(info), cfg );
     }

Modified: geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpointTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpointTest.java?view=diff&rev=465736&r1=465735&r2=465736
==============================================================================
--- geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpointTest.java (original)
+++ geronimo/sandbox/gcache/server/src/test/java/org/apache/geronimo/gcache/transports/tcp/TCPEndpointTest.java Thu Oct 19 12:10:26 2006
@@ -62,6 +62,15 @@
         //Check that the socket addresses match (Remote on server == Local for client)
         assert remoteAddr.getPort() == localAddr.getPort();
         
+        client.close();
+        
+        //Give the server some time to figure out the client closed the connection
+        Thread.sleep(1000);
+        
+        //The endpoint should have been removed
+        set = info.getEndpointManager().getEndpoints();
+        assert set.size() == 0;
+        
     }
 
 }