You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jg...@apache.org on 2006/09/15 06:57:27 UTC
svn commit: r446519 [1/4] - in /geronimo/sandbox/gcache: ./ openwire/
openwire/src/ openwire/src/main/ openwire/src/main/java/
openwire/src/main/java/org/ openwire/src/main/java/org/apache/
openwire/src/main/java/org/apache/geronimo/ openwire/src/main/...
Author: jgenender
Date: Thu Sep 14 21:57:24 2006
New Revision: 446519
URL: http://svn.apache.org/viewvc?view=rev&rev=446519
Log:
OpenWire protocol added
Added:
geronimo/sandbox/gcache/openwire/
geronimo/sandbox/gcache/openwire/openwire.iml
geronimo/sandbox/gcache/openwire/pom.xml (with props)
geronimo/sandbox/gcache/openwire/src/
geronimo/sandbox/gcache/openwire/src/main/
geronimo/sandbox/gcache/openwire/src/main/java/
geronimo/sandbox/gcache/openwire/src/main/java/org/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/Service.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/ThreadPriorities.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/BaseCommand.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Command.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/CommandTypes.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/DataStructure.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Endpoint.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/ExceptionResponse.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/KeepAliveInfo.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/MarshallAware.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Response.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/WireFormatInfo.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/state/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/state/CommandVisitor.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/thread/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/thread/Scheduler.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/CompositeTransport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/DefaultTransportListener.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/FutureResponse.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityIOException.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityMonitor.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MarshallingTransportFilter.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MutexTransport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/ResponseCallback.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/ResponseCorrelator.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/Transport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportAcceptListener.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportDisposedIOException.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportFactory.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportFilter.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportListener.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportLogger.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportServer.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportServerFilter.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportServerSupport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportServerThreadSupport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportSupport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/TransportThreadSupport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/WireFormatNegotiator.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/tcp/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/tcp/ResponseHolder.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/tcp/SslTransportFactory.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/tcp/TcpBufferedInputStream.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/tcp/TcpBufferedOutputStream.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/tcp/TcpTransport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/tcp/TcpTransportFactory.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/tcp/TcpTransportServer.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/ByteArrayInputStream.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/ByteArrayOutputStream.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/ByteSequence.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/Callback.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/ClassLoading.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/ClassLoadingAwareObjectInputStream.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/FactoryFinder.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/IOExceptionSupport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/IntSequenceGenerator.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/IntrospectionSupport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/MarshallingSupport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/ServiceStopper.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/ServiceSupport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/util/URISupport.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/wireformat/
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/wireformat/ObjectStreamWireFormat.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/wireformat/WireFormat.java (with props)
geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/wireformat/WireFormatFactory.java (with props)
geronimo/sandbox/gcache/openwire/src/test/
Modified:
geronimo/sandbox/gcache/pom.xml
Added: geronimo/sandbox/gcache/openwire/openwire.iml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/openwire.iml?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/openwire.iml (added)
+++ geronimo/sandbox/gcache/openwire/openwire.iml Thu Sep 14 21:57:24 2006
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4" relativePaths="false" type="JAVA_MODULE">
+ <component name="ModuleRootManager" />
+ <component name="NewModuleRootManager">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <exclude-output />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar:///Users/jeffgenender/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar:///Users/jeffgenender/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar:///Users/jeffgenender/.m2/repository/backport-util-concurrent/backport-util-concurrent/2.0_01_pd/backport-util-concurrent-2.0_01_pd.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntryProperties />
+ </component>
+</module>
+
Added: geronimo/sandbox/gcache/openwire/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/pom.xml?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/pom.xml (added)
+++ geronimo/sandbox/gcache/openwire/pom.xml Thu Sep 14 21:57:24 2006
@@ -0,0 +1,36 @@
+<project>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.geronimo.gcache</groupId>
+ <artifactId>gcache</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>openwire</artifactId>
+ <packaging>jar</packaging>
+ <version>${gcacheVersion}</version>
+
+ <name>GCache :: OpenWire</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>backport-util-concurrent</groupId>
+ <artifactId>backport-util-concurrent</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+
+ </dependencies>
+
+</project>
Propchange: geronimo/sandbox/gcache/openwire/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/pom.xml
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/pom.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/Service.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/Service.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/Service.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/Service.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,25 @@
+package org.apache.geronimo.openwire;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public interface Service {
+
+ public void start() throws Exception;
+
+ public void stop() throws Exception;
+
+}
+
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/Service.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/Service.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/Service.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/ThreadPriorities.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/ThreadPriorities.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/ThreadPriorities.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/ThreadPriorities.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,25 @@
+package org.apache.geronimo.openwire;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public interface ThreadPriorities {
+ public static final int INBOUND_CONNECTION = 6;
+ public static final int OUT_BOUND_DISPATCH = 6;
+ public static final int INBOUND_CLIENT_CONNECTION = 7;
+ public static final int INBOUND_CLIENT_SESSION = 7;
+ public static final int MANAGEMENT = 9;
+}
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/ThreadPriorities.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/ThreadPriorities.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/ThreadPriorities.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/BaseCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/BaseCommand.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/BaseCommand.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/BaseCommand.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,114 @@
+package org.apache.geronimo.openwire.command;
+
+import org.apache.geronimo.openwire.util.IntrospectionSupport;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+abstract public class BaseCommand implements Command {
+ //TODO - FIX THIS - REMOVE AMQ SPECIFIC STUFF
+
+ protected int commandId;
+ protected boolean responseRequired;
+
+ private transient Endpoint from;
+ private transient Endpoint to;
+
+ public void copy(BaseCommand copy) {
+ copy.commandId = commandId;
+ copy.responseRequired = responseRequired;
+ }
+
+ public int getCommandId() {
+ return commandId;
+ }
+
+ public void setCommandId(int commandId) {
+ this.commandId = commandId;
+ }
+
+ public boolean isResponseRequired() {
+ return responseRequired;
+ }
+
+ public void setResponseRequired(boolean responseRequired) {
+ this.responseRequired = responseRequired;
+ }
+
+ public String toString() {
+ return IntrospectionSupport.toString(this, BaseCommand.class);
+ }
+
+ public boolean isWireFormatInfo() {
+ return false;
+ }
+
+ public boolean isBrokerInfo() {
+ return false;
+ }
+
+ public boolean isResponse() {
+ return false;
+ }
+
+ public boolean isMessageDispatch() {
+ return false;
+ }
+
+ public boolean isMessage() {
+ return false;
+ }
+
+ public boolean isMarshallAware() {
+ return false;
+ }
+
+ public boolean isMessageAck() {
+ return false;
+ }
+
+ public boolean isMessageDispatchNotification() {
+ return false;
+ }
+
+ public boolean isShutdownInfo() {
+ return false;
+ }
+
+ /**
+ * The endpoint within the transport where this message came from.
+ */
+ public Endpoint getFrom() {
+ return from;
+ }
+
+ public void setFrom(Endpoint from) {
+ this.from = from;
+ }
+
+ /**
+ * The endpoint within the transport where this message is going to - null means all endpoints.
+ */
+ public Endpoint getTo() {
+ return to;
+ }
+
+ public void setTo(Endpoint to) {
+ this.to = to;
+ }
+
+
+}
+
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/BaseCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/BaseCommand.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/BaseCommand.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Command.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Command.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Command.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Command.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,59 @@
+package org.apache.geronimo.openwire.command;
+
+import org.apache.geronimo.openwire.state.CommandVisitor;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public interface Command extends DataStructure {
+ //TODO - FIX THIS - REMOVE AMQ SPECIFIC STUFF
+
+ void setCommandId(int value);
+
+ /**
+ * @return the unique ID of this request used to map responses to requests
+ */
+ int getCommandId();
+
+ void setResponseRequired(boolean responseRequired);
+ boolean isResponseRequired();
+
+ boolean isResponse();
+ boolean isMessageDispatch();
+ boolean isBrokerInfo();
+ boolean isWireFormatInfo();
+ boolean isMessage();
+ boolean isMessageAck();
+ boolean isMessageDispatchNotification();
+ boolean isShutdownInfo();
+
+ Response visit( CommandVisitor visitor) throws Exception;
+
+ /**
+ * The endpoint within the transport where this message came from which could be null if the
+ * transport only supports a single endpoint.
+ */
+ public Endpoint getFrom();
+
+ public void setFrom(Endpoint from);
+
+ /**
+ * The endpoint within the transport where this message is going to - null means all endpoints.
+ */
+ public Endpoint getTo();
+
+ public void setTo(Endpoint to);
+}
+
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Command.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Command.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Command.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/CommandTypes.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/CommandTypes.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/CommandTypes.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/CommandTypes.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,153 @@
+package org.apache.geronimo.openwire.command;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public interface CommandTypes {
+ //TODO - FIX THIS - REMOVE AMQ SPECIFIC STUFF
+
+ // A marshaling layer can use this type to specify a null object.
+ byte NULL = 0;
+
+ ///////////////////////////////////////////////////
+ //
+ // Info objects sent back and forth client/server when
+ // setting up a client connection.
+ //
+ ///////////////////////////////////////////////////
+ byte WIREFORMAT_INFO = 1;
+ byte BROKER_INFO = 2;
+ byte CONNECTION_INFO = 3;
+ byte SESSION_INFO = 4;
+ byte CONSUMER_INFO = 5;
+ byte PRODUCER_INFO = 6;
+ byte TRANSACTION_INFO = 7;
+ byte DESTINATION_INFO = 8;
+ byte REMOVE_SUBSCRIPTION_INFO = 9;
+ byte KEEP_ALIVE_INFO = 10;
+ byte SHUTDOWN_INFO = 11;
+ byte REMOVE_INFO = 12;
+ byte CONTROL_COMMAND = 14;
+ byte FLUSH_COMMAND = 15;
+ byte CONNECTION_ERROR = 16;
+ byte CONSUMER_CONTROL = 17;
+ byte CONNECTION_CONTROL = 18;
+
+ ///////////////////////////////////////////////////
+ //
+ // Messages that go back and forth between the client
+ // and the server.
+ //
+ ///////////////////////////////////////////////////
+ byte MESSAGE_PULL = 20;
+ byte MESSAGE_DISPATCH = 21;
+ byte MESSAGE_ACK = 22;
+
+ byte ACTIVEMQ_MESSAGE = 23;
+ byte ACTIVEMQ_BYTES_MESSAGE = 24;
+ byte ACTIVEMQ_MAP_MESSAGE = 25;
+ byte ACTIVEMQ_OBJECT_MESSAGE = 26;
+ byte ACTIVEMQ_STREAM_MESSAGE = 27;
+ byte ACTIVEMQ_TEXT_MESSAGE = 28;
+
+ ///////////////////////////////////////////////////
+ //
+ // Command Response messages
+ //
+ ///////////////////////////////////////////////////
+ byte RESPONSE = 30;
+ byte EXCEPTION_RESPONSE = 31;
+ byte DATA_RESPONSE = 32;
+ byte DATA_ARRAY_RESPONSE = 33;
+ byte INTEGER_RESPONSE = 34;
+
+
+ ///////////////////////////////////////////////////
+ //
+ // Used by discovery
+ //
+ ///////////////////////////////////////////////////
+ byte DISCOVERY_EVENT = 40;
+
+ ///////////////////////////////////////////////////
+ //
+ // Command object used by the Journal
+ //
+ ///////////////////////////////////////////////////
+ byte JOURNAL_ACK = 50;
+ byte JOURNAL_REMOVE = 52;
+ byte JOURNAL_TRACE = 53;
+ byte JOURNAL_TRANSACTION = 54;
+ byte DURABLE_SUBSCRIPTION_INFO = 55;
+
+ ///////////////////////////////////////////////////
+ //
+ // Reliability and fragmentation
+ //
+ ///////////////////////////////////////////////////
+ byte PARTIAL_COMMAND = 60;
+ byte PARTIAL_LAST_COMMAND = 61;
+
+ byte REPLAY = 65;
+
+
+ ///////////////////////////////////////////////////
+ //
+ // Types used represent basic Java types.
+ //
+ ///////////////////////////////////////////////////
+ byte BYTE_TYPE = 70;
+ byte CHAR_TYPE = 71;
+ byte SHORT_TYPE = 72;
+ byte INTEGER_TYPE = 73;
+ byte LONG_TYPE = 74;
+ byte DOUBLE_TYPE = 75;
+ byte FLOAT_TYPE = 76;
+ byte STRING_TYPE = 77;
+ byte BOOLEAN_TYPE = 78;
+ byte BYTE_ARRAY_TYPE = 79;
+
+
+ ///////////////////////////////////////////////////
+ //
+ // Broker to Broker command objects
+ //
+ ///////////////////////////////////////////////////
+
+ byte MESSAGE_DISPATCH_NOTIFICATION = 90;
+ byte NETWORK_BRIDGE_FILTER = 91;
+
+
+ ///////////////////////////////////////////////////
+ //
+ // Data structures contained in the command objects.
+ //
+ ///////////////////////////////////////////////////
+ byte ACTIVEMQ_QUEUE = 100;
+ byte ACTIVEMQ_TOPIC = 101;
+ byte ACTIVEMQ_TEMP_QUEUE = 102;
+ byte ACTIVEMQ_TEMP_TOPIC = 103;
+
+ byte MESSAGE_ID = 110;
+ byte ACTIVEMQ_LOCAL_TRANSACTION_ID = 111;
+ byte ACTIVEMQ_XA_TRANSACTION_ID = 112;
+
+ byte CONNECTION_ID = 120;
+ byte SESSION_ID = 121;
+ byte CONSUMER_ID = 122;
+ byte PRODUCER_ID = 123;
+ byte BROKER_ID = 124;
+}
+
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/CommandTypes.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/CommandTypes.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/CommandTypes.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/DataStructure.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/DataStructure.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/DataStructure.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/DataStructure.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,27 @@
+package org.apache.geronimo.openwire.command;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public interface DataStructure {
+
+ /**
+ * @return The type of the data structure
+ */
+ byte getDataStructureType();
+ boolean isMarshallAware();
+
+}
+
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/DataStructure.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/DataStructure.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/DataStructure.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Endpoint.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Endpoint.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Endpoint.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Endpoint.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,40 @@
+package org.apache.geronimo.openwire.command;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public interface Endpoint {
+
+ /**
+ * Returns the name of the endpoint.
+ */
+ public String getName();
+
+ /**
+ * Returns the broker ID for this endpoint, if the endpoint is a broker or
+ * null
+ */
+ public BrokerId getBrokerId();
+
+ /**
+ * Returns the broker information for this endpoint, if the endpoint is a
+ * broker or null
+ */
+ public BrokerInfo getBrokerInfo();
+
+ public void setBrokerInfo(BrokerInfo brokerInfo);
+
+}
+
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Endpoint.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Endpoint.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Endpoint.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/ExceptionResponse.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/ExceptionResponse.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/ExceptionResponse.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/ExceptionResponse.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,46 @@
+package org.apache.geronimo.openwire.command;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public class ExceptionResponse extends Response {
+
+ Throwable exception;
+
+ public static final byte DATA_STRUCTURE_TYPE=CommandTypes.EXCEPTION_RESPONSE;
+
+ public ExceptionResponse() {
+ }
+ public ExceptionResponse(Throwable e) {
+ setException(e);
+ }
+
+ public byte getDataStructureType() {
+ return DATA_STRUCTURE_TYPE;
+ }
+
+ public Throwable getException() {
+ return exception;
+ }
+
+ public void setException(Throwable exception) {
+ this.exception = exception;
+ }
+
+ public boolean isException() {
+ return true;
+ }
+}
+
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/ExceptionResponse.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/ExceptionResponse.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/ExceptionResponse.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/KeepAliveInfo.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/KeepAliveInfo.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/KeepAliveInfo.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/KeepAliveInfo.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,99 @@
+package org.apache.geronimo.openwire.command;
+
+import org.apache.geronimo.openwire.util.IntrospectionSupport;
+import org.apache.geronimo.openwire.state.CommandVisitor;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public class KeepAliveInfo extends BaseCommand {
+
+ public static final byte DATA_STRUCTURE_TYPE=CommandTypes.KEEP_ALIVE_INFO;
+
+ private transient Endpoint from;
+ private transient Endpoint to;
+
+ public byte getDataStructureType() {
+ return DATA_STRUCTURE_TYPE;
+ }
+
+ public boolean isResponse() {
+ return false;
+ }
+
+ public boolean isMessageDispatch() {
+ return false;
+ }
+
+ public boolean isMessage() {
+ return false;
+ }
+
+ public boolean isMessageAck() {
+ return false;
+ }
+
+ public boolean isBrokerInfo() {
+ return false;
+ }
+
+ public boolean isWireFormatInfo() {
+ return false;
+ }
+
+ /**
+ * The endpoint within the transport where this message came from.
+ */
+ public Endpoint getFrom() {
+ return from;
+ }
+
+ public void setFrom(Endpoint from) {
+ this.from = from;
+ }
+
+ /**
+ * The endpoint within the transport where this message is going to - null means all endpoints.
+ */
+ public Endpoint getTo() {
+ return to;
+ }
+
+ public void setTo(Endpoint to) {
+ this.to = to;
+ }
+
+
+ public Response visit(CommandVisitor visitor) throws Exception {
+ return visitor.processKeepAlive( this );
+ }
+
+ public boolean isMarshallAware() {
+ return false;
+ }
+
+ public boolean isMessageDispatchNotification(){
+ return false;
+ }
+
+ public boolean isShutdownInfo(){
+ return false;
+ }
+
+ public String toString() {
+ return IntrospectionSupport.toString(this, KeepAliveInfo.class);
+ }
+}
+
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/KeepAliveInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/KeepAliveInfo.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/KeepAliveInfo.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/MarshallAware.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/MarshallAware.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/MarshallAware.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/MarshallAware.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,33 @@
+package org.apache.geronimo.openwire.command;
+
+import org.apache.geronimo.openwire.wireformat.WireFormat;
+import org.apache.geronimo.openwire.util.ByteSequence;
+
+import java.io.IOException;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public interface MarshallAware {
+
+ public void beforeMarshall(WireFormat wireFormat) throws IOException;
+ public void afterMarshall(WireFormat wireFormat) throws IOException;
+
+ public void beforeUnmarshall(WireFormat wireFormat) throws IOException;
+ public void afterUnmarshall(WireFormat wireFormat) throws IOException;
+
+ public void setCachedMarshalledForm(WireFormat wireFormat, ByteSequence data);
+ public ByteSequence getCachedMarshalledForm(WireFormat wireFormat);
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/MarshallAware.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/MarshallAware.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/MarshallAware.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Response.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Response.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Response.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Response.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,48 @@
+package org.apache.geronimo.openwire.command;
+
+import org.apache.geronimo.openwire.state.CommandVisitor;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public class Response extends BaseCommand {
+
+ public static final byte DATA_STRUCTURE_TYPE=CommandTypes.RESPONSE;
+ int correlationId;
+
+ public byte getDataStructureType() {
+ return DATA_STRUCTURE_TYPE;
+ }
+
+ public int getCorrelationId() {
+ return correlationId;
+ }
+
+ public void setCorrelationId(int responseId) {
+ this.correlationId = responseId;
+ }
+
+ public boolean isResponse() {
+ return true;
+ }
+
+ public boolean isException() {
+ return false;
+ }
+
+ public Response visit(CommandVisitor visitor) throws Exception {
+ return null;
+ }
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Response.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Response.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/Response.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/WireFormatInfo.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/WireFormatInfo.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/WireFormatInfo.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/WireFormatInfo.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,308 @@
+package org.apache.geronimo.openwire.command;
+
+import org.apache.geronimo.openwire.util.ByteSequence;
+import org.apache.geronimo.openwire.util.ByteArrayInputStream;
+import org.apache.geronimo.openwire.util.ByteArrayOutputStream;
+import org.apache.geronimo.openwire.util.MarshallingSupport;
+import org.apache.geronimo.openwire.state.CommandVisitor;
+import org.apache.geronimo.openwire.wireformat.WireFormat;
+
+import java.io.IOException;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.util.Map;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Arrays;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public class WireFormatInfo implements Command, MarshallAware {
+
+ private static final int MAX_PROPERTY_SIZE = 1024*4;
+ public static final byte DATA_STRUCTURE_TYPE = CommandTypes.WIREFORMAT_INFO;
+ static final private byte MAGIC[] = new byte[] { 'A', 'c', 't', 'i', 'v', 'e', 'M', 'Q' };
+
+ protected byte magic[] = MAGIC;
+ protected int version;
+ protected ByteSequence marshalledProperties;
+
+ protected transient Map properties;
+ private transient Endpoint from;
+ private transient Endpoint to;
+
+ public byte getDataStructureType() {
+ return DATA_STRUCTURE_TYPE;
+ }
+
+ public boolean isWireFormatInfo() {
+ return true;
+ }
+
+ public boolean isMarshallAware() {
+ return true;
+ }
+
+ public byte[] getMagic() {
+ return magic;
+ }
+ public void setMagic(byte[] magic) {
+ this.magic = magic;
+ }
+
+ public int getVersion() {
+ return version;
+ }
+ public void setVersion(int version) {
+ this.version = version;
+ }
+
+ public ByteSequence getMarshalledProperties() {
+ return marshalledProperties;
+ }
+ public void setMarshalledProperties(ByteSequence marshalledProperties) {
+ this.marshalledProperties = marshalledProperties;
+ }
+
+ /**
+ * The endpoint within the transport where this message came from.
+ */
+ public Endpoint getFrom() {
+ return from;
+ }
+
+ public void setFrom(Endpoint from) {
+ this.from = from;
+ }
+
+ /**
+ * The endpoint within the transport where this message is going to - null means all endpoints.
+ */
+ public Endpoint getTo() {
+ return to;
+ }
+
+ public void setTo(Endpoint to) {
+ this.to = to;
+ }
+
+ //////////////////////
+ //
+ // Implementation Methods.
+ //
+ //////////////////////
+
+ public Object getProperty(String name) throws IOException {
+ if( properties == null ) {
+ if( marshalledProperties ==null )
+ return null;
+ properties = unmarsallProperties(marshalledProperties);
+ }
+ return properties.get(name);
+ }
+
+ public Map getProperties() throws IOException {
+ if( properties == null ) {
+ if( marshalledProperties==null )
+ return Collections.EMPTY_MAP;
+ properties = unmarsallProperties(marshalledProperties);
+ }
+ return Collections.unmodifiableMap(properties);
+ }
+
+ public void clearProperties() {
+ marshalledProperties = null;
+ properties=null;
+ }
+
+ public void setProperty(String name, Object value) throws IOException {
+ lazyCreateProperties();
+ properties.put(name, value);
+ }
+
+ protected void lazyCreateProperties() throws IOException {
+ if( properties == null ) {
+ if( marshalledProperties == null ) {
+ properties = new HashMap();
+ } else {
+ properties = unmarsallProperties(marshalledProperties);
+ marshalledProperties = null;
+ }
+ }
+ }
+
+ private Map unmarsallProperties(ByteSequence marshalledProperties) throws IOException {
+ return MarshallingSupport.unmarshalPrimitiveMap(new DataInputStream(new ByteArrayInputStream(marshalledProperties)), MAX_PROPERTY_SIZE);
+ }
+
+ public void beforeMarshall(WireFormat wireFormat) throws IOException {
+ // Need to marshal the properties.
+ if( marshalledProperties==null && properties!=null ) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ DataOutputStream os = new DataOutputStream(baos);
+ MarshallingSupport.marshalPrimitiveMap(properties, os);
+ os.close();
+ marshalledProperties = baos.toByteSequence();
+ }
+ }
+
+ public void afterMarshall(WireFormat wireFormat) throws IOException {
+ }
+
+ public void beforeUnmarshall(WireFormat wireFormat) throws IOException {
+ }
+
+ public void afterUnmarshall(WireFormat wireFormat) throws IOException {
+ }
+
+
+ public boolean isValid() {
+ return magic != null && Arrays.equals(magic, MAGIC);
+ }
+
+ public void setResponseRequired(boolean responseRequired) {
+ }
+
+ /**
+ * @throws IOException
+ */
+ public boolean isCacheEnabled() throws IOException {
+ return Boolean.TRUE == getProperty("CacheEnabled");
+ }
+ public void setCacheEnabled(boolean cacheEnabled) throws IOException {
+ setProperty("CacheEnabled", cacheEnabled ? Boolean.TRUE : Boolean.FALSE);
+ }
+
+ /**
+ * @throws IOException
+ */
+ public boolean isStackTraceEnabled() throws IOException {
+ return Boolean.TRUE == getProperty("StackTraceEnabled");
+ }
+ public void setStackTraceEnabled(boolean stackTraceEnabled) throws IOException {
+ setProperty("StackTraceEnabled", stackTraceEnabled ? Boolean.TRUE : Boolean.FALSE);
+ }
+
+ /**
+ * @throws IOException
+ */
+ public boolean isTcpNoDelayEnabled() throws IOException {
+ return Boolean.TRUE == getProperty("TcpNoDelayEnabled");
+ }
+ public void setTcpNoDelayEnabled(boolean tcpNoDelayEnabled) throws IOException {
+ setProperty("TcpNoDelayEnabled", tcpNoDelayEnabled ? Boolean.TRUE : Boolean.FALSE);
+ }
+
+ /**
+ * @throws IOException
+ */
+ public boolean isSizePrefixDisabled() throws IOException {
+ return Boolean.TRUE == getProperty("SizePrefixDisabled");
+ }
+ public void setSizePrefixDisabled(boolean prefixPacketSize) throws IOException {
+ setProperty("SizePrefixDisabled", prefixPacketSize ? Boolean.TRUE : Boolean.FALSE);
+ }
+
+ /**
+ * @throws IOException
+ */
+ public boolean isTightEncodingEnabled() throws IOException {
+ return Boolean.TRUE == getProperty("TightEncodingEnabled");
+ }
+ public void setTightEncodingEnabled(boolean tightEncodingEnabled) throws IOException {
+ setProperty("TightEncodingEnabled", tightEncodingEnabled ? Boolean.TRUE : Boolean.FALSE);
+ }
+
+ /**
+ * @throws IOException
+ */
+ public long getMaxInactivityDuration() throws IOException {
+ Long l = (Long) getProperty("MaxInactivityDuration");
+ return l == null ? 0 : l.longValue();
+ }
+ public void seMaxInactivityDuration(long maxInactivityDuration) throws IOException {
+ setProperty("MaxInactivityDuration", new Long(maxInactivityDuration));
+ }
+
+ public Response visit(CommandVisitor visitor) throws Exception {
+ return visitor.processWireFormat(this);
+ }
+
+ public String toString() {
+ Map p=null;
+ try {
+ p = getProperties();
+ } catch (IOException e) {
+ }
+ return "WireFormatInfo { version="+version+", properties="+p+", magic="+toString(magic)+"}";
+ }
+
+ private String toString(byte []data) {
+ StringBuffer sb = new StringBuffer();
+ sb.append('[');
+ for (int i = 0; i < data.length; i++) {
+ if( i != 0 ) {
+ sb.append(',');
+ }
+ sb.append((char)data[i]);
+ }
+ sb.append(']');
+ return sb.toString();
+ }
+
+ ///////////////////////////////////////////////////////////////
+ //
+ // This are not implemented.
+ //
+ ///////////////////////////////////////////////////////////////
+
+ public void setCommandId(int value) {
+ }
+ public int getCommandId() {
+ return 0;
+ }
+ public boolean isResponseRequired() {
+ return false;
+ }
+ public boolean isResponse() {
+ return false;
+ }
+ public boolean isBrokerInfo() {
+ return false;
+ }
+ public boolean isMessageDispatch() {
+ return false;
+ }
+ public boolean isMessage() {
+ return false;
+ }
+ public boolean isMessageAck() {
+ return false;
+ }
+ public boolean isMessageDispatchNotification(){
+ return false;
+ }
+ public boolean isShutdownInfo(){
+ return false;
+ }
+ public void setCachedMarshalledForm(WireFormat wireFormat, ByteSequence data) {
+ }
+ public ByteSequence getCachedMarshalledForm(WireFormat wireFormat) {
+ return null;
+ }
+
+}
+
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/WireFormatInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/WireFormatInfo.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/command/WireFormatInfo.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/state/CommandVisitor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/state/CommandVisitor.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/state/CommandVisitor.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/state/CommandVisitor.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,35 @@
+package org.apache.geronimo.openwire.state;
+
+import org.apache.geronimo.openwire.command.Response;
+import org.apache.geronimo.openwire.command.WireFormatInfo;
+import org.apache.geronimo.openwire.command.KeepAliveInfo;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public interface CommandVisitor {
+ //TODO - Fill out like below with new commands
+ /**
+ Response processAddConnection(ConnectionInfo info) throws Exception;
+ Response processAddSession(SessionInfo info) throws Exception;
+ Response processAddProducer(ProducerInfo info) throws Exception;
+ Response processAddConsumer(ConsumerInfo info) throws Exception;
+ **/
+
+ Response processWireFormat(WireFormatInfo info) throws Exception;
+ Response processKeepAlive(KeepAliveInfo info) throws Exception;
+
+
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/state/CommandVisitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/state/CommandVisitor.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/state/CommandVisitor.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/thread/Scheduler.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/thread/Scheduler.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/thread/Scheduler.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/thread/Scheduler.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,57 @@
+package org.apache.geronimo.openwire.thread;
+
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+import edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.ScheduledFuture;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadFactory;
+
+import java.util.HashMap;
+
+/**
+ * Copyright 2006 The Apache Software Foundation
+ * <p/>
+ * Licensed 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+public class Scheduler {
+
+ static public ScheduledThreadPoolExecutor clockDaemon = new ScheduledThreadPoolExecutor(5, new ThreadFactory(){
+ public Thread newThread(Runnable runnable) {
+ Thread thread = new Thread(runnable,"ActiveMQ Scheduler");
+ thread.setDaemon(true);
+ return thread;
+ }
+ });
+ static {
+ clockDaemon.setKeepAliveTime(5, TimeUnit.SECONDS);
+ clockDaemon.allowCoreThreadTimeOut(false);
+ }
+ static HashMap clockTickets = new HashMap();
+
+ synchronized static public void executePeriodically(final Runnable task, long period) {
+ ScheduledFuture ticket = clockDaemon.scheduleAtFixedRate(task, period, period, TimeUnit.MILLISECONDS);
+ clockTickets.put(task, ticket);
+ }
+
+ synchronized static public void cancel(Runnable task) {
+ ScheduledFuture ticket = (ScheduledFuture) clockTickets.remove(task);
+ if( ticket!=null ) {
+ ticket.cancel(true);
+ clockDaemon.remove(task);
+ }
+ }
+
+ public static void executeAfterDelay(final Runnable task, long redeliveryDelay) {
+ clockDaemon.schedule(task, redeliveryDelay, TimeUnit.MILLISECONDS);
+ }
+
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/thread/Scheduler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/thread/Scheduler.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/thread/Scheduler.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/CompositeTransport.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/CompositeTransport.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/CompositeTransport.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/CompositeTransport.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,25 @@
+/**
+ *
+ * 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.geronimo.openwire.transport;
+
+import java.net.URI;
+
+public interface CompositeTransport extends Transport {
+ public void add(URI[] uris);
+ public void remove(URI[] uris);
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/CompositeTransport.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/CompositeTransport.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/CompositeTransport.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/DefaultTransportListener.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/DefaultTransportListener.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/DefaultTransportListener.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/DefaultTransportListener.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,59 @@
+/**
+ *
+ * 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.geronimo.openwire.transport;
+
+import java.io.IOException;
+
+import org.apache.geronimo.openwire.command.Command;
+
+/**
+ * An asynchronous listener of commands
+ *
+ * @version $Revision$
+ */
+public class DefaultTransportListener implements TransportListener {
+
+ /**
+ * called to process a command
+ * @param command
+ */
+ public void onCommand(Command command){
+ }
+ /**
+ * An unrecoverable exception has occured on the transport
+ * @param error
+ */
+ public void onException(IOException error){
+ }
+
+ /**
+ * The transport has suffered an interuption from which it hopes to recover
+ *
+ */
+ public void transportInterupted(){
+ }
+
+
+ /**
+ * The transport has resumed after an interuption
+ *
+ */
+ public void transportResumed(){
+ }
+
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/DefaultTransportListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/DefaultTransportListener.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/DefaultTransportListener.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/DefaultTransportListener.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/FutureResponse.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/FutureResponse.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/FutureResponse.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/FutureResponse.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,68 @@
+/**
+ *
+ * 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.geronimo.openwire.transport;
+
+import java.io.IOException;
+import java.io.InterruptedIOException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.openwire.command.Response;
+
+import edu.emory.mathcs.backport.java.util.concurrent.ArrayBlockingQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+
+public class FutureResponse {
+ private static final Log log = LogFactory.getLog(FutureResponse.class);
+
+ private final ResponseCallback responseCallback;
+ private final ArrayBlockingQueue responseSlot = new ArrayBlockingQueue(1);
+
+ public FutureResponse(ResponseCallback responseCallback) {
+ this.responseCallback = responseCallback;
+ }
+
+ public Response getResult() throws IOException {
+ try {
+ return (Response) responseSlot.take();
+ }
+ catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ if (log.isDebugEnabled()) {
+ log.debug("Operation interupted: " + e, e);
+ }
+ throw new InterruptedIOException("Interrupted.");
+ }
+ }
+
+ public Response getResult(int timeout) throws IOException {
+ try {
+ return (Response) responseSlot.poll(timeout,TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new InterruptedIOException("Interrupted.");
+ }
+ }
+
+ public void set(Response result) {
+ if( responseSlot.offer(result) ) {
+ if( responseCallback !=null ) {
+ responseCallback.onCompletion(this);
+ }
+ }
+ }
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/FutureResponse.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/FutureResponse.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/FutureResponse.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/FutureResponse.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityIOException.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityIOException.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityIOException.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityIOException.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,47 @@
+/**
+ *
+ * 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.geronimo.openwire.transport;
+
+import java.io.IOException;
+
+/**
+ * This is exception is thrown when the transport layer detects that the underlying socket has been inactive for
+ * too long.
+ *
+ * @version $Revision$
+ */
+public class InactivityIOException extends IOException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 5816001466763503220L;
+
+ public InactivityIOException() {
+ super();
+ }
+
+ /**
+ * @param message
+ */
+ public InactivityIOException(String message) {
+ super(message);
+ }
+
+
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityIOException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityIOException.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityIOException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityMonitor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityMonitor.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityMonitor.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityMonitor.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,182 @@
+/**
+ *
+ * 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.geronimo.openwire.transport;
+
+import java.io.IOException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.openwire.command.WireFormatInfo;
+import org.apache.geronimo.openwire.command.KeepAliveInfo;
+import org.apache.geronimo.openwire.command.Command;
+import org.apache.geronimo.openwire.thread.Scheduler;
+
+import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * Used to make sure that commands are arriving periodically from the peer of the transport.
+ *
+ * @version $Revision$
+ */
+public class InactivityMonitor extends TransportFilter {
+
+ private final Log log = LogFactory.getLog(InactivityMonitor.class);
+
+ private WireFormatInfo localWireFormatInfo;
+ private WireFormatInfo remoteWireFormatInfo;
+ private boolean monitorStarted=false;
+
+ private final AtomicBoolean commandSent=new AtomicBoolean(false);
+ private final AtomicBoolean inSend=new AtomicBoolean(false);
+
+ private final AtomicBoolean commandReceived=new AtomicBoolean(true);
+ private final AtomicBoolean inReceive=new AtomicBoolean(false);
+
+ private final Runnable readChecker = new Runnable() {
+ public void run() {
+ readCheck();
+ }
+ };
+
+ private final Runnable writeChecker = new Runnable() {
+ public void run() {
+ writeCheck();
+ }
+ };
+
+
+ public InactivityMonitor(Transport next) {
+ super(next);
+ }
+
+ public void stop() throws Exception {
+ stopMonitorThreads();
+ next.stop();
+ }
+
+
+ private void writeCheck() {
+ if( inSend.get() ) {
+ log.trace("A send is in progress");
+ return;
+ }
+
+ if( !commandSent.get() ) {
+ log.trace("No message sent since last write check, sending a KeepAliveInfo");
+ try {
+ next.oneway(new KeepAliveInfo());
+ } catch (IOException e) {
+ onException(e);
+ }
+ } else {
+ log.trace("Message sent since last write check, resetting flag");
+ }
+
+ commandSent.set(false);
+
+ }
+
+ private void readCheck() {
+ if( inReceive.get() ) {
+ log.trace("A receive is in progress");
+ return;
+ }
+
+ if( !commandReceived.get() ) {
+ log.debug("No message received since last read check for " + toString() + "! Throwing InactivityIOException.");
+ onException(new InactivityIOException("Channel was inactive for too long."));
+ } else {
+ log.trace("Message received since last read check, resetting flag: ");
+ }
+
+ commandReceived.set(false);
+ }
+
+ public void onCommand(Command command) {
+ inReceive.set(true);
+ try {
+ if( command.isWireFormatInfo() ) {
+ synchronized( this ) {
+ remoteWireFormatInfo = (WireFormatInfo) command;
+ try {
+ startMonitorThreads();
+ } catch (IOException e) {
+ onException(e);
+ }
+ }
+ }
+ getTransportListener().onCommand(command);
+ } finally {
+ inReceive.set(false);
+ commandReceived.set(true);
+ }
+ }
+
+
+ public void oneway(Command command) throws IOException {
+ // Disable inactivity monitoring while processing a command.
+ inSend.set(true);
+ commandSent.set(true);
+ try {
+ if( command.isWireFormatInfo() ) {
+ synchronized( this ) {
+ localWireFormatInfo = (WireFormatInfo) command;
+ startMonitorThreads();
+ }
+ }
+ next.oneway(command);
+ } finally {
+ inSend.set(false);
+ }
+ }
+
+ public void onException(IOException error) {
+ stopMonitorThreads();
+ getTransportListener().onException(error);
+ }
+
+
+ synchronized private void startMonitorThreads() throws IOException {
+ if( monitorStarted )
+ return;
+ if( localWireFormatInfo == null )
+ return;
+ if( remoteWireFormatInfo == null )
+ return;
+
+ long l = Math.min(localWireFormatInfo.getMaxInactivityDuration(), remoteWireFormatInfo.getMaxInactivityDuration());
+ if( l > 0 ) {
+ Scheduler.executePeriodically(writeChecker, l/2);
+ Scheduler.executePeriodically(readChecker, l);
+ monitorStarted=true;
+ }
+ }
+
+ /**
+ *
+ */
+ synchronized private void stopMonitorThreads() {
+ if( monitorStarted ) {
+ Scheduler.cancel(readChecker);
+ Scheduler.cancel(writeChecker);
+ monitorStarted=false;
+ }
+ }
+
+
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityMonitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityMonitor.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityMonitor.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/InactivityMonitor.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MarshallingTransportFilter.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MarshallingTransportFilter.java?view=auto&rev=446519
==============================================================================
--- geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MarshallingTransportFilter.java (added)
+++ geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MarshallingTransportFilter.java Thu Sep 14 21:57:24 2006
@@ -0,0 +1,48 @@
+/**
+ *
+ * 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.geronimo.openwire.transport;
+
+import java.io.IOException;
+
+import org.apache.activemq.command.Command;
+import org.apache.activemq.wireformat.WireFormat;
+
+public class MarshallingTransportFilter extends TransportFilter {
+
+ private final WireFormat localWireFormat;
+ private final WireFormat remoteWireFormat;
+
+ public MarshallingTransportFilter(Transport next, WireFormat localWireFormat, WireFormat remoteWireFormat) {
+ super(next);
+ this.localWireFormat = localWireFormat;
+ this.remoteWireFormat = remoteWireFormat;
+ }
+
+ public void oneway(Command command) throws IOException {
+ next.oneway((Command) remoteWireFormat.unmarshal(localWireFormat.marshal(command)));
+ }
+
+ public void onCommand(Command command) {
+ try {
+ getTransportListener().onCommand((Command)localWireFormat.unmarshal(remoteWireFormat.marshal(command)));
+ } catch (IOException e) {
+ getTransportListener().onException(e);
+ }
+ }
+
+}
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MarshallingTransportFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MarshallingTransportFilter.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MarshallingTransportFilter.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/gcache/openwire/src/main/java/org/apache/geronimo/openwire/transport/MarshallingTransportFilter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain