[jboss-remoting-commits] JBoss Remoting SVN: r3748 - in remoting3/trunk: api/src/main/java/org/jboss/cx/remoting/spi/protocol and 3 other directories.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Tue Mar 25 14:54:15 EDT 2008


Author: david.lloyd at jboss.com
Date: 2008-03-25 14:54:14 -0400 (Tue, 25 Mar 2008)
New Revision: 3748

Removed:
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/protocol/ProtocolServerContext.java
Modified:
   remoting3/trunk/build.xml
   remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreEndpoint.java
   remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppConnection.java
   remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppProtocolSupport.java
   remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppServer.java
   remoting3/trunk/standalone/src/main/java/org/jboss/cx/remoting/Remoting.java
Log:
Move protocol server context into endpoint proper; add a JRPP server support method to standalone

Deleted: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/protocol/ProtocolServerContext.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/protocol/ProtocolServerContext.java	2008-03-25 09:11:43 UTC (rev 3747)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/protocol/ProtocolServerContext.java	2008-03-25 18:54:14 UTC (rev 3748)
@@ -1,11 +0,0 @@
-package org.jboss.cx.remoting.spi.protocol;
-
-import org.jboss.cx.remoting.Context;
-
-/**
- *
- */
-public interface ProtocolServerContext {
-    <I, O> ProtocolContext establishSession(ProtocolHandler handler, Context<I, O> rootContext);
-
-}

Modified: remoting3/trunk/build.xml
===================================================================
--- remoting3/trunk/build.xml	2008-03-25 09:11:43 UTC (rev 3747)
+++ remoting3/trunk/build.xml	2008-03-25 18:54:14 UTC (rev 3748)
@@ -863,6 +863,7 @@
                 <path refid="api.classpath"/>
                 <path refid="core.classpath"/>
                 <path refid="log-jul.classpath"/>
+                <path refid="jrpp.classpath"/>
                 <path refid="util.classpath"/>
             </classpath>
         </javac>
@@ -873,7 +874,7 @@
         <delete dir="standalone/target"/>
     </target>
 
-    <target name="standalone" description="Build the standalone module" depends="api,core,log-jul,util,standalone.compile">
+    <target name="standalone" description="Build the standalone module" depends="api,core,jrpp,log-jul,util,standalone.compile">
         <path id="standalone.classpath">
             <pathelement location="standalone/target/main/classes"/>
         </path>

Modified: remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreEndpoint.java
===================================================================
--- remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreEndpoint.java	2008-03-25 09:11:43 UTC (rev 3747)
+++ remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreEndpoint.java	2008-03-25 18:54:14 UTC (rev 3748)
@@ -24,7 +24,6 @@
 import org.jboss.cx.remoting.spi.protocol.ProtocolContext;
 import org.jboss.cx.remoting.spi.protocol.ProtocolHandler;
 import org.jboss.cx.remoting.spi.protocol.ProtocolHandlerFactory;
-import org.jboss.cx.remoting.spi.protocol.ProtocolServerContext;
 import org.jboss.cx.remoting.spi.Registration;
 
 import javax.security.auth.callback.Callback;
@@ -108,19 +107,7 @@
         return orderedExecutorFactory.getOrderedExecutor();
     }
 
-    public final class CoreProtocolServerContext implements ProtocolServerContext {
-        private CoreProtocolServerContext() {
-        }
-
-        public <I, O> ProtocolContext establishSession(final ProtocolHandler handler, final Context<I, O> rootContext) {
-            final CoreSession session = new CoreSession(CoreEndpoint.this);
-            session.initializeServer(handler, rootContext);
-            return session.getProtocolContext();
-        }
-    }
-
     public final class CoreProtocolRegistration implements Registration {
-        private final CoreProtocolServerContext protocolServerContext = new CoreProtocolServerContext();
         private final ProtocolHandlerFactory protocolHandlerFactory;
 
         private CoreProtocolRegistration(final ProtocolHandlerFactory protocolHandlerFactory) {

Modified: remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppConnection.java
===================================================================
--- remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppConnection.java	2008-03-25 09:11:43 UTC (rev 3747)
+++ remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppConnection.java	2008-03-25 18:54:14 UTC (rev 3748)
@@ -39,7 +39,6 @@
 import org.jboss.cx.remoting.spi.protocol.ContextIdentifier;
 import org.jboss.cx.remoting.spi.protocol.ProtocolContext;
 import org.jboss.cx.remoting.spi.protocol.ProtocolHandler;
-import org.jboss.cx.remoting.spi.protocol.ProtocolServerContext;
 import org.jboss.cx.remoting.spi.protocol.RequestIdentifier;
 import org.jboss.cx.remoting.spi.protocol.ServiceIdentifier;
 import org.jboss.cx.remoting.spi.protocol.StreamIdentifier;
@@ -87,6 +86,9 @@
     private final AtomicInteger serviceIdSequence = new AtomicInteger(0);
     private final AtomicInteger requestIdSequence = new AtomicInteger(0);
 
+    private ContextIdentifier localRootContextIdentifier;
+    private ContextIdentifier remoteRootContextIdentifier;
+
     private final Set<StreamIdentifier> liveStreamSet = CollectionUtil.synchronizedSet(new WeakHashSet<StreamIdentifier>());
     private final Set<ContextIdentifier> liveContextSet = CollectionUtil.synchronizedSet(new WeakHashSet<ContextIdentifier>());
     private final Set<RequestIdentifier> liveRequestSet = CollectionUtil.synchronizedSet(new WeakHashSet<RequestIdentifier>());
@@ -140,25 +142,40 @@
     }
 
     public void initializeClient(final IoSession ioSession, final ProtocolContext protocolContext) {
+        if (ioSession == null) {
+            throw new NullPointerException("ioSession is null");
+        }
+        if (protocolContext == null) {
+            throw new NullPointerException("protocolContext is null");
+        }
         state.transitionExclusive(State.NEW, State.AWAITING_SERVER_VERSION);
         try {
             ioSession.setAttribute(JRPP_CONNECTION, this);
             this.ioSession = ioSession;
             this.protocolContext = protocolContext;
             client = true;
+            remoteRootContextIdentifier = new JrppContextIdentifier(false, 0);
+            localRootContextIdentifier = new JrppContextIdentifier(true, 0);
         } finally {
             state.releaseExclusive();
         }
     }
 
-    public void initializeServer(final IoSession ioSession, final ProtocolServerContext protocolServerContext) {
+    public void initializeServer(final IoSession ioSession, final ProtocolContext protocolContext) {
+        if (ioSession == null) {
+            throw new NullPointerException("ioSession is null");
+        }
+        if (protocolContext == null) {
+            throw new NullPointerException("protocolContext is null");
+        }
         state.transitionExclusive(State.NEW, State.AWAITING_CLIENT_VERSION);
         try {
             ioSession.setAttribute(JRPP_CONNECTION, this);
             this.ioSession = ioSession;
-            final ProtocolContext protocolContext = protocolServerContext.establishSession(protocolHandler, null /* todo */);
             this.protocolContext = protocolContext;
             client = false;
+            remoteRootContextIdentifier = new JrppContextIdentifier(true, 0);
+            localRootContextIdentifier = new JrppContextIdentifier(false, 0);
         } finally {
             state.releaseExclusive();
         }
@@ -359,13 +376,15 @@
     }
 
     public void waitForUp() throws IOException {
-        
-        while (! state.in(State.UP, State.FAILED)) {
-//            state.waitForAny(); todo
+        try {
+            state.waitFor(State.UP);
+        } catch (IllegalStateException e) {
+            if (state.in(State.FAILED)) {
+                throw failureReason;
+            } else {
+                throw e;
+            }
         }
-        if (state.in(State.FAILED)) {
-            throw failureReason;
-        }
     }
 
     private void close() {
@@ -574,11 +593,11 @@
         }
 
         public ContextIdentifier getLocalRootContextIdentifier() {
-            return null;
+            return localRootContextIdentifier;
         }
 
         public ContextIdentifier getRemoteRootContextIdentifier() {
-            return null;
+            return remoteRootContextIdentifier;
         }
 
         public void sendCancelRequest(ContextIdentifier contextIdentifier, RequestIdentifier requestIdentifier, boolean mayInterrupt) throws IOException {
@@ -659,8 +678,12 @@
         }
 
         public void messageReceived(Object message) throws Exception {
+            final ObjectMessageInput input = protocolContext.getMessageInput(new IoBufferByteMessageInput((IoBuffer) message));
+            handleMessage(input);
+        }
+
+        private void handleMessage(final ObjectMessageInput input) throws Exception {
             final boolean trace = log.isTrace();
-            final ObjectMessageInput input = protocolContext.getMessageInput(new IoBufferByteMessageInput((IoBuffer) message));
             final MessageType type = MessageType.values()[input.readByte() & 0xff];
             if (trace) {
                 log.trace("Received message of type %s in state %s", type, state.getState());

Modified: remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppProtocolSupport.java
===================================================================
--- remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppProtocolSupport.java	2008-03-25 09:11:43 UTC (rev 3747)
+++ remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppProtocolSupport.java	2008-03-25 18:54:14 UTC (rev 3748)
@@ -139,6 +139,14 @@
                 }
             });
             future.awaitUninterruptibly();
+            if (! future.isConnected()) {
+                final Throwable t = future.getException();
+                if (t instanceof IOException) {
+                    throw (IOException)t;
+                } else {
+                    throw new RemotingException("Connection failed due to an unexpected exception", t);
+                }
+            }
             jrppConnection.waitForUp();
             return jrppConnection.getProtocolHandler();
         }

Modified: remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppServer.java
===================================================================
--- remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppServer.java	2008-03-25 09:11:43 UTC (rev 3747)
+++ remoting3/trunk/jrpp/src/main/java/org/jboss/cx/remoting/jrpp/JrppServer.java	2008-03-25 18:54:14 UTC (rev 3748)
@@ -16,8 +16,10 @@
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.jboss.cx.remoting.util.AttributeMap;
 import org.jboss.cx.remoting.jrpp.mina.FramingIoFilter;
-import org.jboss.cx.remoting.spi.protocol.ProtocolServerContext;
+import org.jboss.cx.remoting.Endpoint;
 
+import com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl;
+
 /**
  *
  */
@@ -39,10 +41,10 @@
     private IoProcessor ioProcessor;
     /** IO Acceptor.  Set upon {@code create}. */
     private IoAcceptor ioAcceptor;
-    /** Protocol server context.  Set upon {@code create}. */
-    private ProtocolServerContext serverContext;
     /** Attribute map.  Set before {@code create}. */
     private AttributeMap attributeMap;
+    /** Endpoint.  Set before {@code create}. */
+    private Endpoint endpoint;
 
     // Accessors
 
@@ -70,6 +72,14 @@
         this.attributeMap = attributeMap;
     }
 
+    public Endpoint getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(final Endpoint endpoint) {
+        this.endpoint = endpoint;
+    }
+
     // Lifecycle
 
     @SuppressWarnings ({"unchecked"})
@@ -101,7 +111,6 @@
         ioAcceptor = null;
         ioProcessor = null;
         executor = null;
-        serverContext = null;
     }
 
     // MINA support
@@ -109,7 +118,7 @@
     private final class ServerSessionHandlerFactory implements SingleSessionIoHandlerFactory {
         public SingleSessionIoHandler getHandler(IoSession ioSession) throws IOException {
             final JrppConnection connection = new JrppConnection(attributeMap);
-            connection.initializeServer(ioSession, serverContext);
+            endpoint.openIncomingSession(connection.getProtocolHandler());
             return connection.getIoHandler();
         }
     }

Modified: remoting3/trunk/standalone/src/main/java/org/jboss/cx/remoting/Remoting.java
===================================================================
--- remoting3/trunk/standalone/src/main/java/org/jboss/cx/remoting/Remoting.java	2008-03-25 09:11:43 UTC (rev 3747)
+++ remoting3/trunk/standalone/src/main/java/org/jboss/cx/remoting/Remoting.java	2008-03-25 18:54:14 UTC (rev 3748)
@@ -1,12 +1,17 @@
 package org.jboss.cx.remoting;
 
 import java.net.URI;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ExecutorService;
+import java.io.IOException;
 import org.jboss.cx.remoting.log.Logger;
 import org.jboss.cx.remoting.core.CoreEndpoint;
 import org.jboss.cx.remoting.core.protocol.LocalProtocolHandlerFactory;
 import org.jboss.cx.remoting.jrpp.JrppProtocolSupport;
+import org.jboss.cx.remoting.jrpp.JrppServer;
+import org.jboss.cx.remoting.util.AttributeMap;
 
 /**
  *
@@ -14,7 +19,9 @@
 public final class Remoting {
     private static final Logger log = Logger.getLogger(Remoting.class);
 
-    public static <I, O> Endpoint createEndpoint(String name, RequestListener<I, O> listener) throws RemotingException {
+    private static final String JRPP_SUPPORT_KEY = "org.jboss.cx.remoting.standalone.jrpp.support";
+
+    public static <I, O> Endpoint createEndpoint(String name, RequestListener<I, O> listener) throws IOException {
         final CoreEndpoint coreEndpoint = new CoreEndpoint(name, listener);
         final ExecutorService executorService = Executors.newCachedThreadPool();
         coreEndpoint.setExecutor(executorService);
@@ -28,6 +35,7 @@
             jrppProtocolSupport.setExecutor(executorService);
             jrppProtocolSupport.create();
             jrppProtocolSupport.start();
+            userEndpoint.getAttributes().put(JRPP_SUPPORT_KEY, jrppProtocolSupport);
             userEndpoint.addCloseHandler(new CloseHandler<Endpoint>() {
                 public void handleClose(final Endpoint closed) {
                     executorService.shutdown();
@@ -41,6 +49,26 @@
         }
     }
 
+    public static JrppServer addJrppServer(Endpoint endpoint, SocketAddress address, AttributeMap attributeMap) throws IOException {
+        final JrppServer jrppServer = new JrppServer();
+        jrppServer.setProtocolSupport((JrppProtocolSupport) endpoint.getAttributes().get(JRPP_SUPPORT_KEY));
+        jrppServer.setSocketAddress(new InetSocketAddress(12345));
+        jrppServer.setAttributeMap(AttributeMap.EMPTY);
+        jrppServer.setEndpoint(endpoint);
+        jrppServer.create();
+        jrppServer.start();
+        endpoint.addCloseHandler(new CloseHandler<Endpoint>() {
+            public void handleClose(final Endpoint closed) {
+                try {
+                    jrppServer.stop();
+                } finally {
+                    jrppServer.destroy();
+                }
+            }
+        });
+        return jrppServer;
+    }
+
     public static Session createEndpointAndSession(String endpointName, URI remoteUri, final String userName, final char[] password) throws RemotingException {
         return null;
     }




More information about the jboss-remoting-commits mailing list