[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