[jboss-remoting-commits] JBoss Remoting SVN: r3512 - in remoting3/trunk: api/src/main/java/org/jboss/cx/remoting/service and 2 other directories.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Mon Feb 25 21:14:55 EST 2008


Author: david.lloyd at jboss.com
Date: 2008-02-25 21:14:55 -0500 (Mon, 25 Feb 2008)
New Revision: 3512

Added:
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/CloseHandler.java
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Closeable.java
Modified:
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Context.java
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/ContextSource.java
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Endpoint.java
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Session.java
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/service/ServiceRequest.java
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/ContextSourceWrapper.java
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/ContextWrapper.java
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/EndpointWrapper.java
   remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/SessionWrapper.java
   remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreEndpoint.java
   remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreInboundService.java
   remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreOutboundContext.java
   remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreOutboundService.java
   remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreSession.java
   remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/ServiceLocatorListener.java
Log:
Add close callback notifiers - needed for service locator system

Added: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/CloseHandler.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/CloseHandler.java	                        (rev 0)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/CloseHandler.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -0,0 +1,8 @@
+package org.jboss.cx.remoting;
+
+/**
+ *
+ */
+public interface CloseHandler<T> {
+    void handleClose(T closed);
+}

Added: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Closeable.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Closeable.java	                        (rev 0)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Closeable.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -0,0 +1,10 @@
+package org.jboss.cx.remoting;
+
+/**
+ *
+ */
+public interface Closeable<T> extends java.io.Closeable {
+    void close() throws RemotingException;
+
+    void addCloseHandler(CloseHandler<T> handler);
+}

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Context.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Context.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Context.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -1,13 +1,12 @@
 package org.jboss.cx.remoting;
 
 import java.util.concurrent.ConcurrentMap;
-import java.io.Closeable;
 
 /**
  * A communications context.  The context may be associated with a security/authentication state and a transactional
  * state, as well as other state maintained by the remote side.
  */
-public interface Context<I, O> extends Closeable {
+public interface Context<I, O> extends Closeable<Context<I, O>> {
 
     void close() throws RemotingException;
 

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/ContextSource.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/ContextSource.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/ContextSource.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -3,7 +3,7 @@
 /**
  * A source for new Remoting contexts.
  */
-public interface ContextSource<I, O> {
+public interface ContextSource<I, O> extends Closeable<ContextSource<I, O>> {
     /**
      * Close the context source.  New contexts may no longer be created after this
      * method is called.  Subsequent calls to this method have no additional effect.

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Endpoint.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Endpoint.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Endpoint.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -9,7 +9,7 @@
 /**
  * A potential participant in a JBoss Remoting communications relationship.
  */
-public interface Endpoint {
+public interface Endpoint extends Closeable<Endpoint> {
     /**
      * Get the endpoint attribute map.  This is a storage area for any data associated with this endpoint, including
      * (but not limited to) connection and protocol information, and application information.

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Session.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Session.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/Session.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -1,7 +1,6 @@
 package org.jboss.cx.remoting;
 
 import java.util.concurrent.ConcurrentMap;
-import java.io.Closeable;
 
 /**
  * Represents a point-to-point relationship with another endpoint.
@@ -10,7 +9,7 @@
  * <p/>
  * A session may be shared safely among multiple threads.
  */
-public interface Session extends Closeable {
+public interface Session extends Closeable<Session> {
     /**
      * Close this session.  Any associated connection(s) will be closed.  Calling this method multiple times has no
      * effect.

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/service/ServiceRequest.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/service/ServiceRequest.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/service/ServiceRequest.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -12,6 +12,7 @@
     private URI uri;
     private Class<I> requestType;
     private Class<O> replyType;
+    private int ttl;
 
     public ServiceRequest() {
     }
@@ -47,4 +48,12 @@
     public void setReplyType(final Class<O> replyType) {
         this.replyType = replyType;
     }
+
+    public int getTtl() {
+        return ttl;
+    }
+
+    public void setTtl(final int ttl) {
+        this.ttl = ttl;
+    }
 }

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/ContextSourceWrapper.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/ContextSourceWrapper.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/ContextSourceWrapper.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -3,6 +3,7 @@
 import org.jboss.cx.remoting.Context;
 import org.jboss.cx.remoting.ContextSource;
 import org.jboss.cx.remoting.RemotingException;
+import org.jboss.cx.remoting.CloseHandler;
 
 /**
  *
@@ -18,6 +19,14 @@
         delegate.close();
     }
 
+    public void addCloseHandler(final CloseHandler<ContextSource<I, O>> closeHandler) {
+        delegate.addCloseHandler(new CloseHandler<ContextSource<I, O>>() {
+            public void handleClose(final ContextSource<I, O> closed) {
+                closeHandler.handleClose(ContextSourceWrapper.this);
+            }
+        });
+    }
+
     public Context<I, O> createContext() throws RemotingException {
         return delegate.createContext();
     }

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/ContextWrapper.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/ContextWrapper.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/ContextWrapper.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -5,6 +5,7 @@
 import org.jboss.cx.remoting.FutureReply;
 import org.jboss.cx.remoting.RemoteExecutionException;
 import org.jboss.cx.remoting.RemotingException;
+import org.jboss.cx.remoting.CloseHandler;
 
 /**
  *
@@ -20,6 +21,14 @@
         delegate.close();
     }
 
+    public void addCloseHandler(final CloseHandler<Context<I, O>> closeHandler) {
+        delegate.addCloseHandler(new CloseHandler<Context<I, O>>() {
+            public void handleClose(final Context<I, O> closed) {
+                closeHandler.handleClose(ContextWrapper.this);
+            }
+        });
+    }
+
     public O invoke(final I request) throws RemotingException, RemoteExecutionException, InterruptedException {
         return delegate.invoke(request);
     }

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/EndpointWrapper.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/EndpointWrapper.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/EndpointWrapper.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -8,6 +8,7 @@
 import org.jboss.cx.remoting.Context;
 import org.jboss.cx.remoting.RequestListener;
 import org.jboss.cx.remoting.ContextSource;
+import org.jboss.cx.remoting.CloseHandler;
 import org.jboss.cx.remoting.util.AttributeMap;
 import org.jboss.cx.remoting.spi.protocol.ProtocolRegistration;
 import org.jboss.cx.remoting.spi.protocol.ProtocolRegistrationSpec;
@@ -45,4 +46,16 @@
     public <I, O> ContextSource<I, O> createService(final RequestListener<I, O> requestListener) {
         return delegate.createService(requestListener);
     }
+
+    public void close() throws RemotingException {
+        delegate.close();
+    }
+
+    public void addCloseHandler(final CloseHandler<Endpoint> closeHandler) {
+        delegate.addCloseHandler(new CloseHandler<Endpoint>() {
+            public void handleClose(final Endpoint closed) {
+                closeHandler.handleClose(EndpointWrapper.this);
+            }
+        });
+    }
 }

Modified: remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/SessionWrapper.java
===================================================================
--- remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/SessionWrapper.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/api/src/main/java/org/jboss/cx/remoting/spi/wrapper/SessionWrapper.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -4,6 +4,7 @@
 import org.jboss.cx.remoting.RemotingException;
 import org.jboss.cx.remoting.Session;
 import org.jboss.cx.remoting.Context;
+import org.jboss.cx.remoting.CloseHandler;
 
 /**
  *
@@ -19,6 +20,14 @@
         delegate.close();
     }
 
+    public void addCloseHandler(final CloseHandler<Session> closeHandler) {
+        delegate.addCloseHandler(new CloseHandler<Session>() {
+            public void handleClose(final Session closed) {
+                closeHandler.handleClose(SessionWrapper.this);
+            }
+        });
+    }
+
     public ConcurrentMap<Object, Object> getAttributes() {
         return delegate.getAttributes();
     }

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-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreEndpoint.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -14,6 +14,7 @@
 import org.jboss.cx.remoting.Context;
 import org.jboss.cx.remoting.RequestListener;
 import org.jboss.cx.remoting.ContextSource;
+import org.jboss.cx.remoting.CloseHandler;
 import org.jboss.cx.remoting.util.CollectionUtil;
 import org.jboss.cx.remoting.version.Version;
 import org.jboss.cx.remoting.log.Logger;
@@ -233,5 +234,12 @@
             return null;
         }
 
+        public void close() throws RemotingException {
+            // todo ...
+        }
+
+        public void addCloseHandler(final CloseHandler<Endpoint> closeHandler) {
+            // todo ...
+        }
     }
 }

Modified: remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreInboundService.java
===================================================================
--- remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreInboundService.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreInboundService.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -2,7 +2,6 @@
 
 import org.jboss.cx.remoting.RemotingException;
 import org.jboss.cx.remoting.RequestListener;
-import org.jboss.cx.remoting.log.Logger;
 import org.jboss.cx.remoting.spi.protocol.ContextIdentifier;
 import org.jboss.cx.remoting.spi.protocol.ServiceIdentifier;
 
@@ -10,8 +9,6 @@
  *
  */
 public final class CoreInboundService<I, O> {
-    private static final Logger log = Logger.getLogger(CoreInboundService.class);
-
     private final CoreSession coreSession;
     private final ServiceIdentifier serviceIdentifier;
     private final RequestListener<I, O> requestListener;

Modified: remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreOutboundContext.java
===================================================================
--- remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreOutboundContext.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreOutboundContext.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -7,6 +7,7 @@
 import org.jboss.cx.remoting.RemoteExecutionException;
 import org.jboss.cx.remoting.RemotingException;
 import org.jboss.cx.remoting.RequestCompletionHandler;
+import org.jboss.cx.remoting.CloseHandler;
 import org.jboss.cx.remoting.util.AtomicStateMachine;
 import org.jboss.cx.remoting.util.CollectionUtil;
 import org.jboss.cx.remoting.log.Logger;
@@ -132,6 +133,10 @@
             receiveCloseContext();
         }
 
+        public void addCloseHandler(final CloseHandler<Context<I, O>> closeHandler) {
+            // todo ...
+        }
+
         public O invoke(final I request) throws RemotingException, RemoteExecutionException, InterruptedException {
             state.requireHold(State.UP);
             try {

Modified: remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreOutboundService.java
===================================================================
--- remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreOutboundService.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreOutboundService.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -3,6 +3,7 @@
 import org.jboss.cx.remoting.Context;
 import org.jboss.cx.remoting.ContextSource;
 import org.jboss.cx.remoting.RemotingException;
+import org.jboss.cx.remoting.CloseHandler;
 import org.jboss.cx.remoting.util.AtomicStateMachine;
 import org.jboss.cx.remoting.log.Logger;
 import org.jboss.cx.remoting.spi.protocol.ServiceIdentifier;
@@ -79,6 +80,10 @@
             receiveServiceTerminate();
         }
 
+        public void addCloseHandler(final CloseHandler<ContextSource<I, O>> closeHandler) {
+            // todo ...
+        }
+
         public Context<I, O> createContext() throws RemotingException {
             // Don't need waitForNotHold here since the state can't change again
             final State currentState = state.waitForNot(State.WAITING_FOR_REPLY);

Modified: remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreSession.java
===================================================================
--- remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreSession.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/CoreSession.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -19,6 +19,7 @@
 import org.jboss.cx.remoting.RequestListener;
 import org.jboss.cx.remoting.Session;
 import org.jboss.cx.remoting.Context;
+import org.jboss.cx.remoting.CloseHandler;
 import org.jboss.cx.remoting.core.stream.DefaultStreamDetector;
 import org.jboss.cx.remoting.util.AtomicStateMachine;
 import org.jboss.cx.remoting.util.AttributeMap;
@@ -375,6 +376,10 @@
             }
         }
 
+        public void addCloseHandler(final CloseHandler<Session> closeHandler) {
+            // todo ...
+        }
+
         public ConcurrentMap<Object, Object> getAttributes() {
             return sessionMap;
         }

Modified: remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/ServiceLocatorListener.java
===================================================================
--- remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/ServiceLocatorListener.java	2008-02-26 02:01:05 UTC (rev 3511)
+++ remoting3/trunk/core/src/main/java/org/jboss/cx/remoting/core/ServiceLocatorListener.java	2008-02-26 02:14:55 UTC (rev 3512)
@@ -3,23 +3,41 @@
 import org.jboss.cx.remoting.RequestListener;
 import org.jboss.cx.remoting.RequestContext;
 import org.jboss.cx.remoting.RemoteExecutionException;
+import org.jboss.cx.remoting.ContextSource;
+import org.jboss.cx.remoting.Context;
 import org.jboss.cx.remoting.util.ServiceURI;
+import org.jboss.cx.remoting.util.CollectionUtil;
 import org.jboss.cx.remoting.service.ServiceRequest;
 import org.jboss.cx.remoting.service.ServiceReply;
 import java.net.URI;
+import java.util.concurrent.ConcurrentMap;
 
 /**
  *
  */
 public final class ServiceLocatorListener<I, O> implements RequestListener<ServiceRequest<I, O>, ServiceReply<I, O>> {
-    
 
+    private interface Peer {
+        String getName();
+
+        int getCost();
+
+        <X, Y> Context<ServiceRequest<X, Y>, ServiceReply<X, Y>> getLocatorContext();
+    }
+
+    private static <K, V> ConcurrentMap<K, V> syncMap() {
+        return CollectionUtil.concurrentMap(CollectionUtil.<K, V>hashMap());
+    }
+
+    private final ConcurrentMap<String, ConcurrentMap<String, ContextSource<?, ?>>> deployments = syncMap();
+
     public void handleRequest(final RequestContext<ServiceReply<I, O>> requestContext, final ServiceRequest<I, O> request) throws RemoteExecutionException, InterruptedException {
         final URI uri = request.getUri();
         final ServiceURI serviceURI = new ServiceURI(uri);
         final String endpointName = serviceURI.getEndpointName();
         final String groupName = serviceURI.getGroupName();
         final String serviceType = serviceURI.getServiceType();
+
         
     }
 }




More information about the jboss-remoting-commits mailing list