Cool! I was going to suggest we make that change so that we can use commandId counters on the KeepAliveInfo packets - so when we send them we can help detect missed packets near time of inactivity when using UDP/multicast etc.
James On 3/30/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Author: chirino > Date: Thu Mar 30 10:06:06 2006 > New Revision: 390200 > > URL: http://svn.apache.org/viewcvs?rev=390200&view=rev > Log: > Changed the KeepAliveInfo packet so that it extends BaseCommand so that a > reply can be requested. Should will allow for a broker or a client to get > almost imediate feedback to see if the connection is down. > > > Modified: > > incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/KeepAliveInfo.java > > incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v1/KeepAliveInfoMarshaller.java > > incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v1/KeepAliveInfoTest.java > > incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/Commands/KeepAliveInfo.cs > > incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/KeepAliveInfoMarshaller.cs > incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.c > incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.h > incubator/activemq/trunk/openwire-cpp/src/command/KeepAliveInfo.hpp > > incubator/activemq/trunk/openwire-cpp/src/marshal/KeepAliveInfoMarshaller.hpp > > Modified: > incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/KeepAliveInfo.java > URL: > http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/KeepAliveInfo.java?rev=390200&r1=390199&r2=390200&view=diff > ============================================================================== > --- > incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/KeepAliveInfo.java > (original) > +++ > incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/KeepAliveInfo.java > Thu Mar 30 10:06:06 2006 > @@ -23,7 +23,7 @@ > * @openwire:marshaller code="10" > * @version $Revision$ > */ > -public class KeepAliveInfo implements Command { > +public class KeepAliveInfo extends BaseCommand { > > public static final byte > DATA_STRUCTURE_TYPE=CommandTypes.KEEP_ALIVE_INFO; > > @@ -32,20 +32,6 @@ > > public byte getDataStructureType() { > return DATA_STRUCTURE_TYPE; > - } > - > - public void setCommandId(int value) { > - } > - > - public int getCommandId() { > - return 0; > - } > - > - public void setResponseRequired(boolean responseRequired) { > - } > - > - public boolean isResponseRequired() { > - return false; > } > > public boolean isResponse() { > > Modified: > incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v1/KeepAliveInfoMarshaller.java > URL: > http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v1/KeepAliveInfoMarshaller.java?rev=390200&r1=390199&r2=390200&view=diff > ============================================================================== > --- > incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v1/KeepAliveInfoMarshaller.java > (original) > +++ > incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/openwire/v1/KeepAliveInfoMarshaller.java > Thu Mar 30 10:06:06 2006 > @@ -37,7 +37,7 @@ > * > * @version $Revision$ > */ > -public class KeepAliveInfoMarshaller extends BaseDataStreamMarshaller { > +public class KeepAliveInfoMarshaller extends BaseCommandMarshaller { > > /** > * Return the type of Data Structure we marshal > > Modified: > incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v1/KeepAliveInfoTest.java > URL: > http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v1/KeepAliveInfoTest.java?rev=390200&r1=390199&r2=390200&view=diff > ============================================================================== > --- > incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v1/KeepAliveInfoTest.java > (original) > +++ > incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/openwire/v1/KeepAliveInfoTest.java > Thu Mar 30 10:06:06 2006 > @@ -35,7 +35,7 @@ > * > * @version $Revision$ > */ > -public class KeepAliveInfoTest extends DataFileGeneratorTestSupport { > +public class KeepAliveInfoTest extends BaseCommandTestSupport { > > > public static KeepAliveInfoTest SINGLETON = new KeepAliveInfoTest(); > > Modified: > incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/Commands/KeepAliveInfo.cs > URL: > http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/Commands/KeepAliveInfo.cs?rev=390200&r1=390199&r2=390200&view=diff > ============================================================================== > --- > incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/Commands/KeepAliveInfo.cs > (original) > +++ > incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/Commands/KeepAliveInfo.cs > Thu Mar 30 10:06:06 2006 > @@ -32,7 +32,7 @@ > /// <summary> > /// The ActiveMQ KeepAliveInfo Command > /// </summary> > - public class KeepAliveInfo : BaseDataStructure, Command > + public class KeepAliveInfo : BaseCommand > { > public const byte ID_KeepAliveInfo = 10; > > > Modified: > incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/KeepAliveInfoMarshaller.cs > URL: > http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/KeepAliveInfoMarshaller.cs?rev=390200&r1=390199&r2=390200&view=diff > ============================================================================== > --- > incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/KeepAliveInfoMarshaller.cs > (original) > +++ > incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/KeepAliveInfoMarshaller.cs > Thu Mar 30 10:06:06 2006 > @@ -34,7 +34,7 @@ > /// <summary> > /// Marshalling code for Open Wire Format for KeepAliveInfo > /// </summary> > - class KeepAliveInfoMarshaller : BaseDataStreamMarshaller > + class KeepAliveInfoMarshaller : BaseCommandMarshaller > { > > > > Modified: incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.c > URL: > http://svn.apache.org/viewcvs/incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.c?rev=390200&r1=390199&r2=390200&view=diff > ============================================================================== > --- incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.c > (original) > +++ incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.c Thu > Mar 30 10:06:06 2006 > @@ -2223,20 +2223,20 @@ > > apr_status_t ow_marshal1_KeepAliveInfo(ow_bit_buffer *buffer, > ow_KeepAliveInfo *object) > { > - ow_marshal1_DataStructure(buffer, (ow_DataStructure*)object); > + ow_marshal1_BaseCommand(buffer, (ow_BaseCommand*)object); > > return APR_SUCCESS; > } > apr_status_t ow_marshal2_KeepAliveInfo(ow_byte_buffer *buffer, ow_bit_buffer > *bitbuffer, ow_KeepAliveInfo *object) > { > - ow_marshal2_DataStructure(buffer, bitbuffer, (ow_DataStructure*)object); > + ow_marshal2_BaseCommand(buffer, bitbuffer, (ow_BaseCommand*)object); > > return APR_SUCCESS; > } > > apr_status_t ow_unmarshal_KeepAliveInfo(ow_byte_array *buffer, ow_bit_buffer > *bitbuffer, ow_KeepAliveInfo *object, apr_pool_t *pool) > { > - ow_unmarshal_DataStructure(buffer, bitbuffer, (ow_DataStructure*)object, > pool); > + ow_unmarshal_BaseCommand(buffer, bitbuffer, (ow_BaseCommand*)object, > pool); > > return APR_SUCCESS; > } > @@ -2384,6 +2384,7 @@ > case OW_DESTINATIONINFO_TYPE: > case OW_SHUTDOWNINFO_TYPE: > case OW_DATARESPONSE_TYPE: > + case OW_KEEPALIVEINFO_TYPE: > case OW_FLUSHCOMMAND_TYPE: > case OW_MESSAGEDISPATCH_TYPE: > case OW_ACTIVEMQMAPMESSAGE_TYPE: > > Modified: incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.h > URL: > http://svn.apache.org/viewcvs/incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.h?rev=390200&r1=390199&r2=390200&view=diff > ============================================================================== > --- incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.h > (original) > +++ incubator/activemq/trunk/openwire-c/src/libopenwire/ow_commands_v1.h Thu > Mar 30 10:06:06 2006 > @@ -653,6 +653,8 @@ > typedef struct ow_KeepAliveInfo { > > ow_byte structType; > + ow_int commandId; > + ow_boolean responseRequired; > > } ow_KeepAliveInfo; > ow_KeepAliveInfo *ow_KeepAliveInfo_create(apr_pool_t *pool); > > Modified: incubator/activemq/trunk/openwire-cpp/src/command/KeepAliveInfo.hpp > URL: > http://svn.apache.org/viewcvs/incubator/activemq/trunk/openwire-cpp/src/command/KeepAliveInfo.hpp?rev=390200&r1=390199&r2=390200&view=diff > ============================================================================== > --- incubator/activemq/trunk/openwire-cpp/src/command/KeepAliveInfo.hpp > (original) > +++ incubator/activemq/trunk/openwire-cpp/src/command/KeepAliveInfo.hpp Thu > Mar 30 10:06:06 2006 > @@ -1 +1 @@ > -/* > * Copyright 2006 The Apache Software Foundation or its licensors, as > * applicable. > * > * 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 > * > * 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. > */ > #ifndef KeepAliveInfo_hpp_ > #define KeepAliveInfo_hpp_ > > #include <string> > #include "command/BaseDataStructure.hpp" > > > #include "util/ifr/ap.hpp" > #include "util/ifr/p.hpp" > > namespace apache > { > namespace activemq > { > namespace client > { > namespace command > { > using namespace ifr; > using namespace std; > using names > pace apache::activemq::client; > > /* > * > * Marshalling code for Open Wire Format for KeepAliveInfo > * > * > * NOTE!: This file is autogenerated - do not modify! > * if you need to make a change, please see the Groovy scripts in the > * activemq-core module > * > */ > class KeepAliveInfo : public BaseDataStructure > { > private: > > public: > const static int TYPE = 10; > > public: > KeepAliveInfo() ; > virtual ~KeepAliveInfo() ; > > virtual int getCommandType() ; > > > } ; > > /* namespace */ > } > } > } > } > > #endif /*KeepAliveInfo_hpp_*/ > \ No newline at end of file > +/* > * Copyright 2006 The Apache Software Foundation or its licensors, as > * applicable. > * > * 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 > * > * 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. > */ > #ifndef KeepAliveInfo_hpp_ > #define KeepAliveInfo_hpp_ > > #include <string> > #include "command/BaseCommand.hpp" > > > #include "util/ifr/ap.hpp" > #include "util/ifr/p.hpp" > > namespace apache > { > namespace activemq > { > namespace client > { > namespace command > { > using namespace ifr; > using namespace std; > using namespace a > pache::activemq::client; > > /* > * > * Marshalling code for Open Wire Format for KeepAliveInfo > * > * > * NOTE!: This file is autogenerated - do not modify! > * if you need to make a change, please see the Groovy scripts in the > * activemq-core module > * > */ > class KeepAliveInfo : public BaseCommand > { > private: > > public: > const static int TYPE = 10; > > public: > KeepAliveInfo() ; > virtual ~KeepAliveInfo() ; > > virtual int getCommandType() ; > > > } ; > > /* namespace */ > } > } > } > } > > #endif /*KeepAliveInfo_hpp_*/ > \ No newline at end of file > > Modified: > incubator/activemq/trunk/openwire-cpp/src/marshal/KeepAliveInfoMarshaller.hpp > URL: > http://svn.apache.org/viewcvs/incubator/activemq/trunk/openwire-cpp/src/marshal/KeepAliveInfoMarshaller.hpp?rev=390200&r1=390199&r2=390200&view=diff > ============================================================================== > --- > incubator/activemq/trunk/openwire-cpp/src/marshal/KeepAliveInfoMarshaller.hpp > (original) > +++ > incubator/activemq/trunk/openwire-cpp/src/marshal/KeepAliveInfoMarshaller.hpp > Thu Mar 30 10:06:06 2006 > @@ -1 +1 @@ > -/* > * Copyright 2006 The Apache Software Foundation or its licensors, as > * applicable. > * > * 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 > * > * 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. > */ > #ifndef KeepAliveInfoMarshaller_hpp_ > #define KeepAliveInfoMarshaller_hpp_ > > #include <string> > > #include "command/IDataStructure.hpp" > > /* we could cut this down - for now include all possible headers */ > #include "command/BrokerId.hpp" > #include "command/ConnectionId.hpp" > #include "command/ConsumerId.hpp" > #include "command/ProducerId.hpp" > #include "comman > d/SessionId.hpp" > > #include "io/BinaryReader.hpp" > #include "io/BinaryWriter.hpp" > > #include "command/BaseDataStreamMarshaller.hpp" > #include "util/ifr/p.hpp" > > #include "protocol/ProtocolFormat.hpp" > > namespace apache > { > namespace activemq > { > namespace client > { > namespace marshal > { > using namespace ifr ; > using namespace apache::activemq::client::command; > using namespace apache::activemq::client::io; > using namespace apache::activemq::client::protocol; > > /* > * > */ > class KeepAliveInfoMarshaller : public BaseDataStreamMarshaller > { > public: > KeepAliveInfoMarshaller() ; > virtual ~KeepAliveInfoMarshaller() ; > > virtual IDataStructure* createCommand() ; > virtual char getDataStructureType() ; > > virtual void unmarshal(ProtocolFormat& wireFormat, Object o, > BinaryReader& dataIn, BooleanStream& bs) ; > virtual int marshal1(ProtocolFormat& wireFormat, Object& o, > BooleanStream& bs) ; > virtual void marshal2(ProtocolFormat& > wireFormat, Object& o, BinaryWriter& dataOut, BooleanStream& bs) ; > } ; > > /* namespace */ > } > } > } > } > #endif /*KeepAliveInfoMarshaller_hpp_*/ > \ No newline at end of file > +/* > * Copyright 2006 The Apache Software Foundation or its licensors, as > * applicable. > * > * 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 > * > * 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. > */ > #ifndef KeepAliveInfoMarshaller_hpp_ > #define KeepAliveInfoMarshaller_hpp_ > > #include <string> > > #include "command/IDataStructure.hpp" > > /* we could cut this down - for now include all possible headers */ > #include "command/BrokerId.hpp" > #include "command/ConnectionId.hpp" > #include "command/ConsumerId.hpp" > #include "command/ProducerId.hpp" > #include "comman > d/SessionId.hpp" > > #include "io/BinaryReader.hpp" > #include "io/BinaryWriter.hpp" > > #include "command/BaseCommandMarshaller.hpp" > #include "util/ifr/p.hpp" > > #include "protocol/ProtocolFormat.hpp" > > namespace apache > { > namespace activemq > { > namespace client > { > namespace marshal > { > using namespace ifr ; > using namespace apache::activemq::client::command; > using namespace apache::activemq::client::io; > using namespace apache::activemq::client::protocol; > > /* > * > */ > class KeepAliveInfoMarshaller : public BaseCommandMarshaller > { > public: > KeepAliveInfoMarshaller() ; > virtual ~KeepAliveInfoMarshaller() ; > > virtual IDataStructure* createCommand() ; > virtual char getDataStructureType() ; > > virtual void unmarshal(ProtocolFormat& wireFormat, Object o, > BinaryReader& dataIn, BooleanStream& bs) ; > virtual int marshal1(ProtocolFormat& wireFormat, Object& o, > BooleanStream& bs) ; > virtual void marshal2(ProtocolFormat& wireFo > rmat, Object& o, BinaryWriter& dataOut, BooleanStream& bs) ; > } ; > > /* namespace */ > } > } > } > } > #endif /*KeepAliveInfoMarshaller_hpp_*/ > \ No newline at end of file > > > -- James ------- http://radio.weblogs.com/0112098/
