You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ad...@apache.org on 2011/08/06 19:53:10 UTC
svn commit: r1154561 - in /mina/sandbox/adc/ahc/mina3/src:
main/java/org/apache/ahc/mina3/ main/java/org/apache/group/
main/java/org/apache/link/ main/java/org/apache/mina/core/
main/java/org/apache/mina/core/api/ main/java/org/apache/mina/core/state/ ...
Author: adc
Date: Sat Aug 6 17:53:08 2011
New Revision: 1154561
URL: http://svn.apache.org/viewvc?rev=1154561&view=rev
Log:
Some refinements for state machine
Added:
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDown.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDown.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownMux.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownMux.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownSet.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownSet.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFuture.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFuture.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFutureListener.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFutureListener.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoListener.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoListener.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUp.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUp.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpMux.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpMux.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpSet.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpSet.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Context.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineContext.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Event.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/EventListener.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java
- copied, changed from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/
- copied from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/group/
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/
- copied from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/link/
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/LinkListener.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/State.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/TimeoutEvent.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Token.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/paxos/
- copied from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/paxos/
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslEvent.java
mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/ahc/mina3/
mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/ahc/mina3/EquipmentStackTest.java
Removed:
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/group/
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/link/
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDown.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownMux.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownSet.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFuture.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFutureListener.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoListener.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUp.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpMux.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpSet.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineContext.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/paxos/
Modified:
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/HttpClientFutureAdaptor.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFuture.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/BaseChannelState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannelState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoConnector.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/AcceptMessage.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/CommitMessage.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/LocalDetectorListener.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Member.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Message.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/MessageByteBufferTransformer.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/ProposeMessage.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/RetryMessage.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/nio/NioSocketConnector.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosedChannelState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosingChannelState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java
mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/mina/core/AbstractIoFutureTest.java
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java Sat Aug 6 17:53:08 2011
@@ -22,8 +22,8 @@ import java.util.concurrent.ExecutionExc
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import org.apache.mina.core.IoFuture;
-import org.apache.mina.core.IoFutureListener;
+import org.apache.mina.core.api.IoFuture;
+import org.apache.mina.core.api.IoFutureListener;
import org.apache.ahc.api.HttpResponse;
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java Sat Aug 6 17:53:08 2011
@@ -22,7 +22,7 @@ import java.net.InetSocketAddress;
import java.net.URL;
import org.apache.mina.core.IoConnector;
-import org.apache.mina.core.IoFuture;
+import org.apache.mina.core.api.IoFuture;
import org.apache.mina.core.IoSession;
import org.apache.ahc.api.HttpClient;
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/HttpClientFutureAdaptor.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/HttpClientFutureAdaptor.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/HttpClientFutureAdaptor.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/HttpClientFutureAdaptor.java Sat Aug 6 17:53:08 2011
@@ -26,8 +26,8 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicReference;
-import org.apache.mina.core.IoFuture;
-import org.apache.mina.core.IoFutureListener;
+import org.apache.mina.core.api.IoFuture;
+import org.apache.mina.core.api.IoFutureListener;
import org.apache.ahc.api.FutureListener;
import org.apache.ahc.api.HttpClientFuture;
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java Sat Aug 6 17:53:08 2011
@@ -18,6 +18,7 @@
*/
package org.apache.mina.core;
+import org.apache.mina.core.api.IoListener;
import org.apache.mina.impl.EquipmentStack;
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFuture.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFuture.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFuture.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFuture.java Sat Aug 6 17:53:08 2011
@@ -30,15 +30,18 @@ import java.util.concurrent.atomic.Atomi
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.mina.core.api.IoFuture;
+import org.apache.mina.core.api.IoFutureListener;
+
/**
- * An abstract implementation of {@link IoFuture}. Owners of this future
+ * An abstract implementation of {@link org.apache.mina.core.api.IoFuture}. Owners of this future
* must implement {@link #cancelOwner(boolean)} to receive notifications of
* when the future should be canceled.
* <p/>
* Concrete implementations of this abstract class should consider overriding
- * the two methods {@link #scheduleResult(IoFutureListener, Object)}
- * and {@link #scheduleException(IoFutureListener, Throwable)}
+ * the two methods {@link #scheduleResult(org.apache.mina.core.api.IoFutureListener, Object)}
+ * and {@link #scheduleException(org.apache.mina.core.api.IoFutureListener, Throwable)}
* so that listeners are called in a separate thread. The default
* implementations may end up calling the listener in the same thread that is
* registering the listener, before the registration has completed.
@@ -218,7 +221,7 @@ public abstract class AbstractIoFuture<V
abstract protected boolean cancelOwner(boolean mayInterruptIfRunning);
/**
- * Default implementation to call a listener's {@link IoFutureListener#completed(Object)}
+ * Default implementation to call a listener's {@link org.apache.mina.core.api.IoFutureListener#completed(Object)}
* method. Owners may override this method so that the listener is called
* from a thread pool.
*
@@ -239,7 +242,7 @@ public abstract class AbstractIoFuture<V
}
/**
- * Default implementation to call a listener's {@link IoFutureListener#exception(Throwable)}
+ * Default implementation to call a listener's {@link org.apache.mina.core.api.IoFutureListener#exception(Throwable)}
* method. Owners may override this method so that the listener is called
* from a thread pool.
*
@@ -261,7 +264,7 @@ public abstract class AbstractIoFuture<V
/**
- * Set the future result of the executing task. Any {@link IoFutureListener}s
+ * Set the future result of the executing task. Any {@link org.apache.mina.core.api.IoFutureListener}s
* are notified of the
*
* @param value the value returned by the executing task.
@@ -289,7 +292,7 @@ public abstract class AbstractIoFuture<V
* throwable was thrown while executing the task. This value is usually
* set by the future result owner.
* <p/>
- * Any {@link IoFutureListener}s are notified of the exception.
+ * Any {@link org.apache.mina.core.api.IoFutureListener}s are notified of the exception.
*
* @param t the throwable that was thrown while executing the task.
*/
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/BaseChannelState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/BaseChannelState.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/BaseChannelState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/BaseChannelState.java Sat Aug 6 17:53:08 2011
@@ -21,11 +21,13 @@ package org.apache.mina.core;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.mina.core.state.Event;
+
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public abstract class BaseChannelState<R, P, E extends Enum> implements IoChannelState<R, P, E>
+public abstract class BaseChannelState<R, P, S extends Enum, E extends Event> implements IoChannelState<R, P, S, E>
{
private final static Logger LOGGER = LoggerFactory.getLogger(BaseChannelState.class);
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.core;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class EquipmentStack implements Cloneable
+{
+ public void inject(IoChannelState channelState)
+ {
+ //Todo change body of created methods use File | Settings | File Templates.
+ }
+}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java Sat Aug 6 17:53:08 2011
@@ -18,6 +18,11 @@
*/
package org.apache.mina.core;
+import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoListener;
+import org.apache.mina.core.api.IoUp;
+
+
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannelState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannelState.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannelState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannelState.java Sat Aug 6 17:53:08 2011
@@ -18,16 +18,22 @@
*/
package org.apache.mina.core;
+import org.apache.mina.core.state.Context;
+import org.apache.mina.core.state.Event;
+
+
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public interface IoChannelState<R, P, E extends Enum>
+public interface IoChannelState<U, D, S extends Enum, E extends Event>
{
void init();
void destroy();
- R send(StateMachineContext<E> context, P message) throws Exception;
+ U send(Context<S> context, D message) throws Exception;
+
+ D receive(Context<S> context, U message) throws Exception;
- R receive(StateMachineContext<E> context, P message) throws Exception;
+ void handle(Context<S> context, E event) throws Exception;
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoConnector.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoConnector.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoConnector.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoConnector.java Sat Aug 6 17:53:08 2011
@@ -21,6 +21,9 @@ package org.apache.mina.core;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
+import org.apache.mina.core.api.IoFuture;
+import org.apache.mina.core.api.IoListener;
+
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java Sat Aug 6 17:53:08 2011
@@ -28,5 +28,7 @@ public @interface IoProperty
{
public String name() default "<bean name>";
+ public String type() default "<use signature>";
+
public IoPropertyScope scope() default IoPropertyScope.PRIVATE;
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java Sat Aug 6 17:53:08 2011
@@ -25,5 +25,6 @@ public enum IoPropertyScope
{
GLOBAL,
SESSION,
- PRIVATE
+ PRIVATE,
+ MINA
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java Sat Aug 6 17:53:08 2011
@@ -21,6 +21,9 @@ package org.apache.mina.core;
import java.security.GeneralSecurityException;
import java.util.Set;
+import org.apache.mina.core.api.IoFuture;
+import org.apache.mina.core.api.IoListener;
+
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDown.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDown.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDown.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDown.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDown.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDown.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDown.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownMux.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownMux.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownMux.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownMux.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownMux.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownMux.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownMux.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
import java.util.Map;
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownSet.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownSet.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownSet.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownSet.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownSet.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoDownSet.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownSet.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
import java.util.Set;
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFuture.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFuture.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFuture.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFuture.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFuture.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFuture.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFuture.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
import java.util.concurrent.Future;
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFutureListener.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFutureListener.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFutureListener.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFutureListener.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFutureListener.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFutureListener.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoFutureListener.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoListener.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoListener.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoListener.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoListener.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoListener.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoListener.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoListener.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
import java.util.EventListener;
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUp.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUp.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUp.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUp.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUp.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUp.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUp.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpMux.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpMux.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpMux.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpMux.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpMux.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpMux.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpMux.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
import java.util.Map;
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpSet.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpSet.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpSet.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpSet.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpSet.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoUpSet.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpSet.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
import java.util.Set;
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Context.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineContext.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Context.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Context.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineContext.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineContext.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Context.java Sat Aug 6 17:53:08 2011
@@ -16,12 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.state;
+
+import org.apache.mina.link.Token;
+
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public interface StateMachineContext<E extends Enum>
+public interface Context<E extends Enum>
{
E getState();
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Event.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Event.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Event.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/Event.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.core.state;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class Event
+{
+}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/EventListener.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/EventListener.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/EventListener.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/EventListener.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.core.state;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public interface EventListener
+{
+ void fired(Event event);
+}
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java (from r1152600, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineChannel.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineChannel.java&r1=1152600&r2=1154561&rev=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/StateMachineChannel.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java Sat Aug 6 17:53:08 2011
@@ -16,48 +16,125 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.state;
+import java.util.Collections;
import java.util.HashMap;
-import java.util.List;
+import java.util.LinkedList;
import java.util.Map;
+import java.util.Queue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.mina.core.AbstractIoChannel;
+import org.apache.mina.core.EquipmentStack;
+import org.apache.mina.core.IoChannelState;
+import org.apache.mina.core.IoProperty;
+import org.apache.mina.core.IoPropertyScope;
+import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoUp;
+
/**
* @author The Apache MINA Project (dev@mina.apache.org)
*/
-public abstract class StateMachineChannel<U, D, E extends Enum> extends AbstractIoChannel<U, D> implements IoDown<D>, IoUp<U>
+public abstract class StateMachineChannel<U, D, S extends Enum, E extends Event> extends AbstractIoChannel<U, D> implements IoDown<D>, IoUp<U>
{
- private final static Logger LOGGER = LoggerFactory.getLogger(StateMachineChannel.class);
- private final Object lock = new Object();
- private E state;
- private Map<E, List<IoChannelState>> states = new HashMap<E, List<IoChannelState>>();
+ private final static Logger LOG = LoggerFactory.getLogger(StateMachineChannel.class);
+ private final Map<S, IoChannelState<U, D, S, E>> states = new HashMap<S, IoChannelState<U, D, S, E>>();
+ private final Queue<E> events = new LinkedList<E>();
+ private EquipmentStack equipmentStack;
+ private volatile S state;
+
+ @IoProperty(name = "equipmentStack", scope = IoPropertyScope.MINA)
+ public void setEquipmentStack(EquipmentStack equipmentStack)
+ {
+ assert equipmentStack != null;
+ this.equipmentStack = equipmentStack;
+ }
- public E getState()
+ public Queue<E> getEvents()
+ {
+ return events;
+ }
+
+ public final S getState()
{
return state;
}
- public void setState(E state)
+ public final void setState(S state)
{
+ assert state != null;
this.state = state;
}
- public Map<E, List<IoChannelState>> getStates()
+ public final Map<S, IoChannelState<U, D, S, E>> getStates()
{
- return states;
+ return Collections.unmodifiableMap(states);
}
- public void init() throws Exception
+ protected final void register(S state, IoChannelState<U, D, S, E> channelState)
{
- LOGGER.trace("init called");
+ assert state != null;
+ assert channelState != null;
+
+ IoChannelState previous = states.put(state, channelState);
+ assert previous == null;
}
public void destroy() throws Exception
{
- LOGGER.trace("destroy called");
+ LOG.trace("destroy called");
+ }
+
+ public final void send(D message) throws Exception
+ {
+ assert message != null;
+
+ IoChannelState<U, D, S, E> channelState = states.get(state);
+ equipmentStack.inject(channelState);
+
+ channelState.send(new StateMachineContext(), message);
+ }
+
+ public final void receive(U message) throws Exception
+ {
+ assert message != null;
+
+ IoChannelState<U, D, S, E> channelState = states.get(state);
+ equipmentStack.inject(channelState);
+
+ channelState.receive(new StateMachineContext(), message);
+ }
+
+ public final void fire(E event) throws Exception
+ {
+ assert event != null;
+
+ IoChannelState<U, D, S, E> channelState = states.get(state);
+ equipmentStack.inject(channelState);
+
+ channelState.handle(new StateMachineContext(), event);
+ }
+
+ protected final void queue(E event)
+ {
+ assert event != null;
+ events.offer(event);
+ }
+
+ private class StateMachineContext implements Context<S>
+ {
+ public S getState()
+ {
+ return StateMachineChannel.this.getState();
+ }
+
+ public void setState(S state)
+ {
+ StateMachineChannel.this.setState(state);
+ }
}
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/AcceptMessage.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/AcceptMessage.java?rev=1154561&r1=1152600&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/AcceptMessage.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/AcceptMessage.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.group;
+package org.apache.mina.group;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/CommitMessage.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/CommitMessage.java?rev=1154561&r1=1152600&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/CommitMessage.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/CommitMessage.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.group;
+package org.apache.mina.group;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/LocalDetectorListener.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/LocalDetectorListener.java?rev=1154561&r1=1152600&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/LocalDetectorListener.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/LocalDetectorListener.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.group;
+package org.apache.mina.group;
import java.util.List;
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Member.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Member.java?rev=1154561&r1=1152600&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Member.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Member.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.group;
+package org.apache.mina.group;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Message.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Message.java?rev=1154561&r1=1152600&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Message.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/Message.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.group;
+package org.apache.mina.group;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/MessageByteBufferTransformer.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/MessageByteBufferTransformer.java?rev=1154561&r1=1152600&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/MessageByteBufferTransformer.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/MessageByteBufferTransformer.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.group;
+package org.apache.mina.group;
import java.nio.ByteBuffer;
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/ProposeMessage.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/ProposeMessage.java?rev=1154561&r1=1152600&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/ProposeMessage.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/ProposeMessage.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.group;
+package org.apache.mina.group;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/RetryMessage.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/RetryMessage.java?rev=1154561&r1=1152600&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/RetryMessage.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/group/RetryMessage.java Sat Aug 6 17:53:08 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.group;
+package org.apache.mina.group;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java Sat Aug 6 17:53:08 2011
@@ -28,7 +28,7 @@ import java.util.Set;
import java.util.Stack;
import org.apache.mina.core.IoConfig;
-import org.apache.mina.core.IoListener;
+import org.apache.mina.core.api.IoListener;
import org.apache.mina.core.IoPropertyScope;
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,106 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.link;
+
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.mina.core.BaseChannelState;
+import org.apache.mina.core.IoProperty;
+import org.apache.mina.core.IoPropertyScope;
+import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.state.Context;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class DownState extends BaseChannelState<Token, Token, State, TimeoutEvent>
+{
+ static final Logger LOG = LoggerFactory.getLogger(DownState.class);
+ private Set<LinkListener> listeners;
+ private int numTokens;
+ private IoDown<Token> child;
+
+ @IoProperty(name = "listeners", type = "org.apache.mina.link.LinkListener", scope = IoPropertyScope.SESSION)
+ public void setListeners(Set<LinkListener> listeners)
+ {
+ this.listeners = listeners;
+ }
+
+ @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
+ public int getNumTokens()
+ {
+ return numTokens;
+ }
+
+ @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
+ public void setNumTokens(int numTokens)
+ {
+ this.numTokens = numTokens;
+ }
+
+ @IoProperty(name = "child", scope = IoPropertyScope.MINA)
+ public void setChild(IoDown<Token> child)
+ {
+ this.child = child;
+ }
+
+ @Override
+ public Token send(Context<State> stateContext, Token message) throws Exception
+ {
+ LOG.error("Should not have been sent a token");
+ throw new UnsupportedOperationException("Link state channel does not support message sending");
+ }
+
+ @Override
+ public Token receive(Context<State> stateContext, Token message) throws Exception
+ {
+ LOG.debug("Received token, tokens={}", numTokens);
+
+ if (numTokens == 2)
+ {
+ for (LinkListener listener : listeners) listener.up();
+
+ stateContext.setState(State.UP);
+ child.send(new Token());
+ }
+ else if (numTokens == 1)
+ {
+ for (LinkListener listener : listeners) listener.up();
+
+ stateContext.setState(State.UP);
+ child.send(new Token());
+ }
+ else if (numTokens == 0)
+ {
+ numTokens++;
+ }
+
+ return null;
+ }
+
+ @Override
+ public void handle(Context<State> stateContext, TimeoutEvent event) throws Exception
+ {
+ LOG.trace("Ignored timeout event");
+ }
+}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.link;
+
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.mina.core.IoProperty;
+import org.apache.mina.core.IoPropertyScope;
+import org.apache.mina.core.state.StateMachineChannel;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class Link extends StateMachineChannel<Token, Token, State, TimeoutEvent>
+{
+ static final Logger LOG = LoggerFactory.getLogger(Link.class);
+ private Set<LinkListener> listeners;
+ private int numTokens;
+
+ public Link()
+ {
+ register(State.UP, new UpState());
+ register(State.UP, new DownState());
+ }
+
+ @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
+ public int getNumTokens()
+ {
+ return numTokens;
+ }
+
+ @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
+ public void setNumTokens(int numTokens)
+ {
+ this.numTokens = numTokens;
+ }
+
+ @IoProperty(name = "listeners", type = "org.apache.mina.link.LinkListener", scope = IoPropertyScope.SESSION)
+ public void setListeners(Set<LinkListener> listeners)
+ {
+ this.listeners = listeners;
+ }
+
+ @Override
+ public void init() throws Exception
+ {
+ setState(State.UP);
+ numTokens = 2;
+
+ for (LinkListener listener : listeners) listener.up();
+
+ LOG.trace("Initialized link");
+ }
+
+ public void timeout()
+ {
+ LOG.debug("Timeout called");
+ queue(new TimeoutEvent());
+ }
+}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/LinkListener.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/LinkListener.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/LinkListener.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/LinkListener.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.link;
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public interface LinkListener
+{
+ public void up();
+
+ public void down();
+}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/State.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/State.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/State.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/State.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,28 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.link;
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public enum State
+{
+ UP,
+ DOWN
+}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/TimeoutEvent.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/TimeoutEvent.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/TimeoutEvent.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/TimeoutEvent.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.link;
+
+import org.apache.mina.core.state.Event;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class TimeoutEvent extends Event
+{
+}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Token.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Token.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Token.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Token.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.link;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class Token
+{
+}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,116 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.link;
+
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.mina.core.BaseChannelState;
+import org.apache.mina.core.IoProperty;
+import org.apache.mina.core.IoPropertyScope;
+import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.state.Context;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class UpState extends BaseChannelState<Token, Token, State, TimeoutEvent>
+{
+ static final Logger LOG = LoggerFactory.getLogger(UpState.class);
+ private Set<LinkListener> listeners;
+ private int numTokens;
+ private IoDown<Token> child;
+
+ @IoProperty(name = "listeners", type = "org.apache.mina.link.LinkListener", scope = IoPropertyScope.SESSION)
+ public void setListeners(Set<LinkListener> listeners)
+ {
+ this.listeners = listeners;
+ }
+
+ @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
+ public int getNumTokens()
+ {
+ return numTokens;
+ }
+
+ @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
+ public void setNumTokens(int numTokens)
+ {
+ this.numTokens = numTokens;
+ }
+
+ @IoProperty(name = "child", scope = IoPropertyScope.MINA)
+ public void setChild(IoDown<Token> child)
+ {
+ this.child = child;
+ }
+
+ @Override
+ public Token send(Context<State> stateContext, Token message) throws Exception
+ {
+ LOG.error("Should not have been sent a token");
+ throw new UnsupportedOperationException("Link state channel does not support message sending");
+ }
+
+ @Override
+ public Token receive(Context<State> stateContext, Token message) throws Exception
+ {
+ LOG.debug("Received token, tokens={}", numTokens);
+
+ if (numTokens == 2)
+ {
+ for (LinkListener listener : listeners) listener.down();
+
+ stateContext.setState(State.DOWN);
+ child.send(new Token());
+ }
+ else if (numTokens == 1)
+ {
+ numTokens++;
+ }
+
+ return null;
+ }
+
+ @Override
+ public void handle(Context<State> stateContext, TimeoutEvent event) throws Exception
+ {
+ LOG.debug("Received timeout event, tokens={}", numTokens);
+
+ if (numTokens == 2)
+ {
+ for (LinkListener listener : listeners) listener.down();
+
+ numTokens--;
+ stateContext.setState(State.DOWN);
+ child.send(new Token());
+ }
+ else if (numTokens == 1)
+ {
+ for (LinkListener listener : listeners) listener.down();
+
+ numTokens--;
+ stateContext.setState(State.DOWN);
+ child.send(new Token());
+ }
+ }
+}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/nio/NioSocketConnector.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/nio/NioSocketConnector.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/nio/NioSocketConnector.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/nio/NioSocketConnector.java Sat Aug 6 17:53:08 2011
@@ -23,8 +23,8 @@ import java.net.SocketAddress;
import org.apache.mina.core.IoConfig;
import org.apache.mina.core.IoConnector;
-import org.apache.mina.core.IoFuture;
-import org.apache.mina.core.IoListener;
+import org.apache.mina.core.api.IoFuture;
+import org.apache.mina.core.api.IoListener;
import org.apache.mina.core.IoSession;
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosedChannelState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosedChannelState.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosedChannelState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosedChannelState.java Sat Aug 6 17:53:08 2011
@@ -19,13 +19,14 @@
package org.apache.mina.ssl;
import org.apache.mina.core.IoChannelState;
-import org.apache.mina.core.StateMachineContext;
+import org.apache.mina.core.state.Context;
+import org.apache.mina.nio.IoByteBuffer;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class ClosedChannelState<R, P> implements IoChannelState<R, P, SslStates>
+public class ClosedChannelState implements IoChannelState<IoByteBuffer, IoByteBuffer, SslStates, SslEvent>
{
public void init()
{
@@ -37,13 +38,21 @@ public class ClosedChannelState<R, P> im
//Todo change body of implemented methods use File | Settings | File Templates.
}
- public R send(StateMachineContext<SslStates> sslStatesStateMachineContext, P message) throws Exception
+ @Override
+ public IoByteBuffer send(Context<SslStates> sslStatesPContext, IoByteBuffer message) throws Exception
{
return null; //Todo change body of implemented methods use File | Settings | File Templates.
}
- public R receive(StateMachineContext<SslStates> sslStatesStateMachineContext, P message) throws Exception
+ @Override
+ public IoByteBuffer receive(Context<SslStates> sslStatesContext, IoByteBuffer message) throws Exception
{
return null; //Todo change body of implemented methods use File | Settings | File Templates.
}
+
+ @Override
+ public void handle(Context<SslStates> sslStatesPContext, SslEvent event) throws Exception
+ {
+ //Todo change body of implemented methods use File | Settings | File Templates.
+ }
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosingChannelState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosingChannelState.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosingChannelState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/ClosingChannelState.java Sat Aug 6 17:53:08 2011
@@ -19,13 +19,14 @@
package org.apache.mina.ssl;
import org.apache.mina.core.IoChannelState;
-import org.apache.mina.core.StateMachineContext;
+import org.apache.mina.core.state.Context;
+import org.apache.mina.nio.IoByteBuffer;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class ClosingChannelState<R, P> implements IoChannelState<R, P, SslStates>
+public class ClosingChannelState implements IoChannelState<IoByteBuffer, IoByteBuffer, SslStates, SslEvent>
{
public void init()
{
@@ -37,13 +38,21 @@ public class ClosingChannelState<R, P> i
//Todo change body of implemented methods use File | Settings | File Templates.
}
- public R send(StateMachineContext<SslStates> stateMachine, P message) throws Exception
+ @Override
+ public IoByteBuffer send(Context<SslStates> sslStatesPContext, IoByteBuffer message) throws Exception
{
return null; //Todo change body of implemented methods use File | Settings | File Templates.
}
- public R receive(StateMachineContext<SslStates> stateMachine, P message) throws Exception
+ @Override
+ public IoByteBuffer receive(Context<SslStates> sslStatesPContext, IoByteBuffer message) throws Exception
{
return null; //Todo change body of implemented methods use File | Settings | File Templates.
}
+
+ @Override
+ public void handle(Context<SslStates> sslStatesPContext, SslEvent event) throws Exception
+ {
+ //Todo change body of implemented methods use File | Settings | File Templates.
+ }
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java Sat Aug 6 17:53:08 2011
@@ -28,14 +28,14 @@ import org.apache.mina.core.BaseChannelS
import org.apache.mina.core.IoBuffer;
import org.apache.mina.core.IoProperty;
import org.apache.mina.core.IoPropertyScope;
-import org.apache.mina.core.StateMachineContext;
+import org.apache.mina.core.state.Context;
import org.apache.mina.nio.IoByteBuffer;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class FinishedChannelState extends BaseChannelState<IoByteBuffer, IoByteBuffer, SslStates>
+public class FinishedChannelState extends BaseChannelState<IoByteBuffer, IoByteBuffer, SslStates, SslEvent>
{
private final static Logger LOGGER = LoggerFactory.getLogger(FinishedChannelState.class);
private ByteBuffer byteBuffer;
@@ -53,28 +53,21 @@ public class FinishedChannelState extend
this.engine = engine;
}
- public IoByteBuffer send(StateMachineContext<SslStates> stateMachine, IoByteBuffer message) throws Exception
+ @Override
+ public IoByteBuffer send(Context<SslStates> context, IoByteBuffer message) throws Exception
{
- IoBuffer ioBuffer = (IoBuffer)message;
-
-// engine.wrap(ioBuffer.getMessages(), byteBuffer);
-
- return new IoByteBuffer(byteBuffer);
+ return null; //Todo change body of implemented methods use File | Settings | File Templates.
}
- public IoByteBuffer receive(StateMachineContext<SslStates> stateMachine, IoByteBuffer message) throws Exception
+ @Override
+ public IoByteBuffer receive(Context<SslStates> context, IoByteBuffer message) throws Exception
{
- IoBuffer ioBuffer = (IoBuffer)message;
+ return null; //Todo change body of implemented methods use File | Settings | File Templates.
+ }
-// SSLEngineResult result = engine.unwrap(ioBuffer.getMessages()[0], byteBuffer);
-//
-// if (result.getStatus() != SSLEngineResult.Status.BUFFER_UNDERFLOW)
-// {
-// return new IoByteBuffer(byteBuffer);
-// }
-// else
-// {
- return null;
-// }
+ @Override
+ public void handle(Context<SslStates> context, SslEvent event) throws Exception
+ {
+ //Todo change body of implemented methods use File | Settings | File Templates.
}
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java Sat Aug 6 17:53:08 2011
@@ -27,14 +27,14 @@ import org.apache.mina.core.BaseChannelS
import org.apache.mina.core.IoBufferFactory;
import org.apache.mina.core.IoProperty;
import org.apache.mina.core.IoPropertyScope;
-import org.apache.mina.core.StateMachineContext;
+import org.apache.mina.core.state.Context;
import org.apache.mina.nio.IoByteBuffer;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class HandshakeChannelState extends BaseChannelState<IoByteBuffer, IoByteBuffer, SslStates>
+public class HandshakeChannelState extends BaseChannelState<IoByteBuffer, IoByteBuffer, SslStates, SslEvent>
{
private final static Logger LOGGER = LoggerFactory.getLogger(HandshakeChannelState.class);
private IoBufferFactory<IoByteBuffer> factory;
@@ -52,7 +52,7 @@ public class HandshakeChannelState exten
this.engine = engine;
}
- public IoByteBuffer send(StateMachineContext<SslStates> context, IoByteBuffer message) throws Exception
+ public IoByteBuffer send(Context<SslStates> context, IoByteBuffer message) throws Exception
{
IoByteBuffer ioByteBuffer = (IoByteBuffer)message;
@@ -80,7 +80,7 @@ public class HandshakeChannelState exten
return byteBuffer;
}
- public IoByteBuffer receive(StateMachineContext<SslStates> context, IoByteBuffer message) throws Exception
+ public IoByteBuffer receive(Context<SslStates> context, IoByteBuffer message) throws Exception
{
IoByteBuffer byteBuffer = factory.allocate(engine.getSession().getPacketBufferSize()).get();
// SSLEngineResult result = engine.unwrap(message.getMessages()[0], byteBuffer);
@@ -114,4 +114,10 @@ public class HandshakeChannelState exten
return byteBuffer;
}
+
+ @Override
+ public void handle(Context<SslStates> sslStatesIoByteBufferContext, SslEvent event) throws Exception
+ {
+ //Todo change body of implemented methods use File | Settings | File Templates.
+ }
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java Sat Aug 6 17:53:08 2011
@@ -20,19 +20,20 @@ package org.apache.mina.ssl;
import javax.net.ssl.SSLEngine;
import java.util.Collections;
+import java.util.concurrent.Executor;
import org.apache.mina.core.IoBufferFactory;
import org.apache.mina.core.IoChannelState;
import org.apache.mina.core.IoProperty;
import org.apache.mina.core.IoPropertyScope;
-import org.apache.mina.core.StateMachineChannel;
+import org.apache.mina.core.state.StateMachineChannel;
import org.apache.mina.nio.IoByteBuffer;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class SslChannel extends StateMachineChannel<IoByteBuffer, IoByteBuffer, SslStates>
+public class SslChannel extends StateMachineChannel<IoByteBuffer, IoByteBuffer, SslStates, SslEvent>
{
private SslConfig sslConfig;
private IoBufferFactory factory;
@@ -40,10 +41,10 @@ public class SslChannel extends StateMac
public SslChannel()
{
- getStates().put(SslStates.HANDSHAKE, Collections.<IoChannelState>singletonList(new HandshakeChannelState()));
- getStates().put(SslStates.FINISHED, Collections.<IoChannelState>singletonList(new FinishedChannelState()));
- getStates().put(SslStates.CLOSING, Collections.<IoChannelState>singletonList(new ClosingChannelState()));
- getStates().put(SslStates.CLOSED, Collections.<IoChannelState>singletonList(new ClosedChannelState()));
+ register(SslStates.HANDSHAKE, new HandshakeChannelState());
+ register(SslStates.FINISHED, new FinishedChannelState());
+ register(SslStates.CLOSING, new ClosingChannelState());
+ register(SslStates.CLOSED, new ClosedChannelState());
}
@IoProperty(name = "sslConfig", scope = IoPropertyScope.GLOBAL)
@@ -75,7 +76,7 @@ public class SslChannel extends StateMac
if (!sslConfig.isLazyHandshake())
{
- HandshakeChannelState state = (HandshakeChannelState)getStates().get(SslStates.HANDSHAKE).get(0);
+ HandshakeChannelState state = (HandshakeChannelState)getStates().get(SslStates.HANDSHAKE);
state.setFactory(factory);
state.setEngine(engine);
@@ -95,14 +96,4 @@ public class SslChannel extends StateMac
{
return engine;
}
-
- public void send(IoByteBuffer message) throws Exception
- {
- //Todo change body of implemented methods use File | Settings | File Templates.
- }
-
- public void receive(IoByteBuffer message) throws Exception
- {
- //Todo change body of implemented methods use File | Settings | File Templates.
- }
}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslEvent.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslEvent.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslEvent.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslEvent.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.ssl;
+
+import org.apache.mina.core.state.Event;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class SslEvent extends Event
+{
+}
Added: mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/ahc/mina3/EquipmentStackTest.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/ahc/mina3/EquipmentStackTest.java?rev=1154561&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/ahc/mina3/EquipmentStackTest.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/ahc/mina3/EquipmentStackTest.java Sat Aug 6 17:53:08 2011
@@ -0,0 +1,319 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ahc.mina3;
+
+import java.util.EmptyStackException;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import org.junit.Test;
+
+import org.apache.ahc.api.HttpConfig;
+import org.apache.ahc.api.HttpListener;
+import org.apache.ahc.mina3.EquipmentStack;
+
+
+/**
+ * @version $Revision: 1141808 $ $Date: 2011-06-30 22:27:33 -0700 (Thu, 30 Jun 2011) $
+ */
+public class EquipmentStackTest
+{
+ @Test
+ public void testPropertiesStack() throws Exception
+ {
+ EquipmentStack stack = new EquipmentStack();
+
+ stack.equipWith("FOO", "BAR");
+
+ assertEquals("BAR", stack.get("FOO"));
+
+ stack.push();
+ stack.equipWith("CDR", "CAR");
+ stack.equipWith("FOO", "CAT");
+
+ assertEquals("CAR", stack.get("CDR"));
+ assertEquals("CAT", stack.get("FOO"));
+
+ stack.push();
+
+ assertEquals("CAR", stack.get("CDR"));
+ assertEquals("CAT", stack.get("FOO"));
+
+ stack.pop();
+
+ assertEquals("CAR", stack.get("CDR"));
+ assertEquals("CAT", stack.get("FOO"));
+
+ stack.pop();
+
+ assertEquals(null, stack.get("CAR"));
+ assertEquals("BAR", stack.get("FOO"));
+
+ try
+ {
+ stack.pop();
+ fail("Should have thrown a EmptyStackException");
+ }
+ catch (EmptyStackException ignore)
+ {
+ }
+ }
+
+ @Test
+ @SuppressWarnings({"unchecked"})
+ public void testListeners() throws Exception
+ {
+ EquipmentStack stack = new EquipmentStack();
+
+ stack.equipWith(new A("A1"));
+
+ Set set = stack.getListeners(AListener.class);
+ assertNotNull(set);
+ assertEquals(1, set.size());
+ assertEquals("A1", ((A)set.iterator().next()).getS());
+
+ stack.push();
+ stack.equipWith(new A("A2"));
+
+ set = stack.getListeners(AListener.class);
+ assertNotNull(set);
+ assertEquals(2, set.size());
+ boolean a1 = false, a2 = false;
+ for (A a : (Set<A>)set)
+ {
+ if ("A1".equals(a.getS())) a1 = true;
+ else if ("A2".equals(a.getS())) a2 = true;
+ }
+ assertTrue(a1);
+ assertTrue(a2);
+
+ stack.pop();
+
+ set = stack.getListeners(AListener.class);
+ assertNotNull(set);
+ assertEquals(1, set.size());
+ assertEquals("A1", ((A)set.iterator().next()).getS());
+
+ stack.equipWith(new B("B1"));
+
+ set = stack.getListeners(AListener.class);
+ assertNotNull(set);
+ assertEquals(2, set.size());
+ boolean b1 = false;
+ for (A a : (Set<A>)set)
+ {
+ if ("A1".equals(a.getS())) a1 = true;
+ else if ("B1".equals(a.getS())) b1 = true;
+ }
+ assertTrue(a1);
+ assertTrue(b1);
+
+ stack.equipWith(new C("C1"));
+
+ set = stack.getListeners(AListener.class);
+ assertNotNull(set);
+ assertEquals(3, set.size());
+ boolean c1 = false;
+ for (A a : (Set<A>)set)
+ {
+ if ("A1".equals(a.getS())) a1 = true;
+ else if ("B1".equals(a.getS())) b1 = true;
+ else if ("C1".equals(a.getS())) c1 = true;
+ }
+ assertTrue(a1);
+ assertTrue(b1);
+ assertTrue(c1);
+
+ set = stack.getListeners(CListener.class);
+ assertNotNull(set);
+ assertEquals(1, set.size());
+ a1 = b1 = false;
+ for (A a : (Set<A>)set)
+ {
+ if ("A1".equals(a.getS())) a1 = true;
+ else if ("B1".equals(a.getS())) b1 = true;
+ else if ("C1".equals(a.getS())) c1 = true;
+ }
+ assertFalse(a1);
+ assertFalse(b1);
+ assertTrue(c1);
+
+ stack.equipWith(new D("D1"));
+
+ set = stack.getListeners(AListener.class);
+ assertNotNull(set);
+ assertEquals(4, set.size());
+ boolean d1 = false;
+ for (A a : (Set<A>)set)
+ {
+ if ("A1".equals(a.getS())) a1 = true;
+ else if ("B1".equals(a.getS())) b1 = true;
+ else if ("C1".equals(a.getS())) c1 = true;
+ else if ("D1".equals(a.getS())) d1 = true;
+ }
+ assertTrue(a1);
+ assertTrue(b1);
+ assertTrue(c1);
+ assertTrue(d1);
+
+ set = stack.getListeners(CListener.class);
+ assertNotNull(set);
+ assertEquals(2, set.size());
+ a1 = b1 = false;
+ for (A a : (Set<A>)set)
+ {
+ if ("A1".equals(a.getS())) a1 = true;
+ else if ("B1".equals(a.getS())) b1 = true;
+ else if ("C1".equals(a.getS())) c1 = true;
+ else if ("D1".equals(a.getS())) d1 = true;
+ }
+ assertFalse(a1);
+ assertFalse(b1);
+ assertTrue(c1);
+ assertTrue(d1);
+ }
+
+ @Test
+ public void testConfig() throws Exception
+ {
+ EquipmentStack stack = new EquipmentStack();
+
+ stack.equipWith(new X("X1"));
+
+ X x = stack.getConfig(X.class);
+ assertNotNull(x);
+ assertEquals("X1", x.getS());
+
+ stack.push();
+ stack.equipWith(new X("X2"));
+
+ x = stack.getConfig(X.class);
+ assertNotNull(x);
+ assertEquals("X2", x.getS());
+
+ stack.pop();
+
+ x = stack.getConfig(X.class);
+ assertNotNull(x);
+ assertEquals("X1", x.getS());
+
+ stack.push();
+
+ x = stack.getConfig(X.class);
+ assertNotNull(x);
+ assertEquals("X1", x.getS());
+
+ stack.equipWith(new Y("Y1"));
+
+ x = stack.getConfig(X.class);
+ assertNotNull(x);
+ assertEquals("Y1", x.getS());
+ x = stack.getConfig(Y.class);
+ assertNotNull(x);
+ assertEquals("Y1", x.getS());
+
+ stack.pop();
+
+ x = stack.getConfig(X.class);
+ assertNotNull(x);
+ assertEquals("X1", x.getS());
+ }
+
+ static interface AListener extends HttpListener
+ {
+ }
+
+ static class A implements AListener
+ {
+ private final String s;
+
+ public A(String s)
+ {
+ this.s = s;
+ }
+
+ public String getS()
+ {
+ return s;
+ }
+ }
+
+ static class B extends A
+ {
+ public B(String s)
+ {
+ super(s);
+ }
+ }
+
+ static interface CListener extends AListener
+ {
+ }
+
+ static class C extends B implements CListener
+ {
+ public C(String s)
+ {
+ super(s);
+ }
+ }
+
+ static class D extends C implements CListener, AListener
+ {
+ public D(String s)
+ {
+ super(s);
+ }
+ }
+
+ static class W
+ {
+ private final String s;
+
+ public W(String s)
+ {
+ this.s = s;
+ }
+
+ public String getS()
+ {
+ return s;
+ }
+ }
+
+ static class X extends W implements HttpConfig
+ {
+ public X(String s)
+ {
+ super(s);
+ }
+ }
+
+ static class Y extends X
+ {
+ public Y(String s)
+ {
+ super(s);
+ }
+ }
+}
Modified: mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/mina/core/AbstractIoFutureTest.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/mina/core/AbstractIoFutureTest.java?rev=1154561&r1=1154560&r2=1154561&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/mina/core/AbstractIoFutureTest.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/mina/core/AbstractIoFutureTest.java Sat Aug 6 17:53:08 2011
@@ -39,6 +39,8 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
+import org.apache.mina.core.api.IoFutureListener;
+
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>