You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2009/04/29 17:22:30 UTC
svn commit: r769797 - in /activemq/activemq-cpp/trunk/activemq-cpp/src:
main/activemq/transport/ main/activemq/transport/failover/
main/activemq/transport/mock/ main/activemq/wireformat/
main/activemq/wireformat/openwire/ main/activemq/wireformat/stomp...
Author: tabish
Date: Wed Apr 29 15:22:28 2009
New Revision: 769797
URL: http://svn.apache.org/viewvc?rev=769797&view=rev
Log:
Some improvements and fixes to the Stomp WireFormat code. Connection's work, subscribes are not right yet, don't receive any messages from the broker.
Modified:
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.h
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/Transport.h
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportFilter.h
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/mock/MockTransport.h
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormat.h
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.h
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.h
activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/correlator/ResponseCorrelatorTest.cpp
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.cpp?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.cpp Wed Apr 29 15:22:28 2009
@@ -127,7 +127,7 @@
synchronized( outputStream ){
// Write the command to the output stream.
- this->wireFormat->marshal( command, this->outputStream );
+ this->wireFormat->marshal( command, this, this->outputStream );
this->outputStream->flush();
}
}
@@ -220,7 +220,7 @@
while( !closed ){
// Read the next command from the input stream.
- Pointer<Command> command( wireFormat->unmarshal( this->inputStream ) );
+ Pointer<Command> command( wireFormat->unmarshal( this, this->inputStream ) );
// Notify the listener.
fire( command );
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.h?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.h Wed Apr 29 15:22:28 2009
@@ -160,7 +160,7 @@
}
/**
- * Sets the observer of asynchronous events from this transport.
+ * Sets the observer of asynchronous exceptions from this transport.
* @param listener the listener of transport events.
*/
virtual void setTransportListener( TransportListener* listener ){
@@ -168,6 +168,14 @@
}
/**
+ * Gets the observer of asynchronous exceptions from this transport.
+ * @return The listener of transport events.
+ */
+ virtual TransportListener* getTransportListener() const {
+ return this->listener;
+ }
+
+ /**
* Sets the input stream for in-coming commands.
* @param is The input stream.
*/
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/Transport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/Transport.h?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/Transport.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/Transport.h Wed Apr 29 15:22:28 2009
@@ -113,6 +113,12 @@
virtual void setTransportListener( TransportListener* listener ) = 0;
/**
+ * Gets the observer of asynchronous events from this transport.
+ * @return the listener of transport events.
+ */
+ virtual TransportListener* getTransportListener() const = 0;
+
+ /**
* Narrows down a Chain of Transports to a specific Transport to allow a
* higher level transport to skip intermediate Transports in certain
* circumstances.
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportFilter.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportFilter.h?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportFilter.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportFilter.h Wed Apr 29 15:22:28 2009
@@ -157,13 +157,21 @@
/**
* Sets the observer of asynchronous exceptions from this transport.
- * @param listener the listener of transport exceptions.
+ * @param listener the listener of transport events.
*/
virtual void setTransportListener( TransportListener* listener ){
this->listener = listener;
}
/**
+ * Gets the observer of asynchronous exceptions from this transport.
+ * @return The listener of transport events.
+ */
+ virtual TransportListener* getTransportListener() const {
+ return this->listener;
+ }
+
+ /**
* Sets the WireFormat instance to use.
* @param WireFormat the object used to encode / decode commands.
*/
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp Wed Apr 29 15:22:28 2009
@@ -153,6 +153,13 @@
}
////////////////////////////////////////////////////////////////////////////////
+TransportListener* FailoverTransport::getTransportListener() const {
+ synchronized( &listenerMutex ) {
+ return this->transportListener;
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
std::string FailoverTransport::getRemoteAddress() const {
synchronized( &reconnectMutex ) {
if( connectedTransport != NULL ) {
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h Wed Apr 29 15:22:28 2009
@@ -204,6 +204,12 @@
virtual void setTransportListener( TransportListener* listener );
/**
+ * Gets the observer of asynchronous exceptions from this transport.
+ * @return The listener of transport events.
+ */
+ virtual TransportListener* getTransportListener() const;
+
+ /**
* Is this Transport fault tolerant, meaning that it will reconnect to
* a broker on disconnect.
*
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/mock/MockTransport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/mock/MockTransport.h?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/mock/MockTransport.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/mock/MockTransport.h Wed Apr 29 15:22:28 2009
@@ -126,11 +126,23 @@
*/
virtual void setWireFormat( const Pointer<wireformat::WireFormat>& wireFormat AMQCPP_UNUSED ) {}
- virtual void setTransportListener( TransportListener* listener ) {
+ /**
+ * Sets the observer of asynchronous exceptions from this transport.
+ * @param listener the listener of transport events.
+ */
+ virtual void setTransportListener( TransportListener* listener ){
this->listener = listener;
}
/**
+ * Gets the observer of asynchronous exceptions from this transport.
+ * @return The listener of transport events.
+ */
+ virtual TransportListener* getTransportListener() const {
+ return this->listener;
+ }
+
+ /**
* Fires a Command back through this transport to its registered
* CommandListener if there is one.
* @param command - Command to send to the Listener.
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormat.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormat.h?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormat.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormat.h Wed Apr 29 15:22:28 2009
@@ -48,22 +48,30 @@
virtual ~WireFormat() {}
/**
- * Stream based marshaling
+ * Stream based marshaling of a Command, this method blocks until the entire
+ * Command has been written out to the output stream.
+ *
* @param command - The Command to Marshal
* @param out - the output stream to write the command to.
* @throws IOException
*/
virtual void marshal( const Pointer<commands::Command>& command,
+ const activemq::transport::Transport* transport,
decaf::io::DataOutputStream* out )
throw ( decaf::io::IOException ) = 0;
/**
- * Packet based un-marshaling
+ * Stream based unmarshaling, blocks on reads on the input stream until a complete
+ * command has been read and unmarshaled into the correct form. Returns a Pointer
+ * to the newly unmarshaled Command.
+ *
+ * @param transport - Pointer to the transport that is making this request.
* @param in - the input stream to read the command from.
* @returns the newly marshaled Command, caller owns the pointer
* @throws IOException
*/
- virtual Pointer<commands::Command> unmarshal( decaf::io::DataInputStream* in )
+ virtual Pointer<commands::Command> unmarshal( const activemq::transport::Transport* transport,
+ decaf::io::DataInputStream* in )
throw ( decaf::io::IOException ) = 0;
/**
@@ -87,7 +95,9 @@
/**
* If the Transport Provides a Negotiator this method will create and return
- * a news instance of the Negotiator.
+ * a new instance of the Negotiator.
+ *
+ * @param transport - the Transport to Wrap the Negotiator around.
* @returns new instance of a WireFormatNegotiator as a Pointer<Transport>.
* @throws UnsupportedOperationException if the WireFormat doesn't have a Negotiator.
*/
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.cpp?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.cpp Wed Apr 29 15:22:28 2009
@@ -159,6 +159,7 @@
////////////////////////////////////////////////////////////////////////////////
void OpenWireFormat::marshal( const Pointer<commands::Command>& command,
+ const activemq::transport::Transport* transport,
decaf::io::DataOutputStream* dataOut )
throw ( decaf::io::IOException ) {
@@ -234,7 +235,8 @@
}
////////////////////////////////////////////////////////////////////////////////
-Pointer<commands::Command> OpenWireFormat::unmarshal( decaf::io::DataInputStream* dis )
+Pointer<commands::Command> OpenWireFormat::unmarshal( const activemq::transport::Transport* transport AMQCPP_UNUSED,
+ decaf::io::DataInputStream* dis )
throw ( decaf::io::IOException ) {
try {
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.h?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/OpenWireFormat.h Wed Apr 29 15:22:28 2009
@@ -109,22 +109,30 @@
void addMarshaller( marshal::DataStreamMarshaller* marshaller );
/**
- * Stream based marshaling
+ * Stream based marshaling of a Command, this method blocks until the entire
+ * Command has been written out to the output stream.
+ *
* @param command - The Command to Marshal
* @param out - the output stream to write the command to.
* @throws IOException
*/
virtual void marshal( const Pointer<commands::Command>& command,
- decaf::io::DataOutputStream* dataOut )
+ const activemq::transport::Transport* transport,
+ decaf::io::DataOutputStream* out )
throw ( decaf::io::IOException );
/**
- * Stream based un-marshaling
- * @param dis - the input stream to read the command from.
+ * Stream based un-marshaling, blocks on reads on the input stream until a complete
+ * command has been read and unmarshaled into the correct form. Returns a Pointer
+ * to the newly unmarshaled Command.
+ *
+ * @param transport - Pointer to the transport that is making this request.
+ * @param in - the input stream to read the command from.
* @returns the newly marshaled Command, caller owns the pointer
* @throws IOException
*/
- virtual Pointer<commands::Command> unmarshal( decaf::io::DataInputStream* dis )
+ virtual Pointer<commands::Command> unmarshal( const activemq::transport::Transport* transport,
+ decaf::io::DataInputStream* in )
throw ( decaf::io::IOException );
/**
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.cpp?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.cpp Wed Apr 29 15:22:28 2009
@@ -19,6 +19,7 @@
#include <activemq/wireformat/stomp/StompFrame.h>
#include <activemq/wireformat/stomp/StompCommandConstants.h>
+#include <activemq/commands/Response.h>
#include <decaf/lang/Character.h>
#include <decaf/lang/Integer.h>
#include <decaf/io/IOException.h>
@@ -26,6 +27,7 @@
using namespace std;
using namespace activemq;
+using namespace activemq::commands;
using namespace activemq::wireformat;
using namespace activemq::wireformat::stomp;
using namespace decaf;
@@ -42,7 +44,9 @@
}
////////////////////////////////////////////////////////////////////////////////
-void StompWireFormat::marshal( const Pointer<Command>& command, decaf::io::DataOutputStream* out )
+void StompWireFormat::marshal( const Pointer<Command>& command,
+ const activemq::transport::Transport* transport,
+ decaf::io::DataOutputStream* out )
throw ( decaf::io::IOException ) {
try{
@@ -56,9 +60,20 @@
Pointer<StompFrame> frame = marshaler.marshal( command );
- // Some commands just don't translate to Stomp Commands, we ignore them
- // and hope that bad things don't happen.
+ // Some commands just don't translate to Stomp Commands, unless they require
+ // a response we can just ignore them.
if( frame == NULL ) {
+
+ if( command->isResponseRequired() ) {
+ Pointer<Response> response( new Response() );
+ response->setCorrelationId( command->getCommandId() );
+
+ transport::TransportListener* listener = transport->getTransportListener();
+ if( listener != NULL ) {
+ listener->onCommand( response );
+ }
+ }
+
return;
}
@@ -105,7 +120,8 @@
}
////////////////////////////////////////////////////////////////////////////////
-Pointer<Command> StompWireFormat::unmarshal( decaf::io::DataInputStream* in )
+Pointer<Command> StompWireFormat::unmarshal( const activemq::transport::Transport* transport,
+ decaf::io::DataInputStream* in )
throw ( decaf::io::IOException ) {
Pointer<StompFrame> frame;
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.h?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/StompWireFormat.h Wed Apr 29 15:22:28 2009
@@ -51,21 +51,30 @@
virtual ~StompWireFormat();
/**
- * Stream based marshaling
+ * Stream based marshaling of a Command, this method blocks until the entire
+ * Command has been written out to the output stream.
+ *
* @param command - The Command to Marshal
* @param out - the output stream to write the command to.
* @throws IOException
*/
- virtual void marshal( const Pointer<Command>& command, decaf::io::DataOutputStream* out )
+ virtual void marshal( const Pointer<commands::Command>& command,
+ const activemq::transport::Transport* transport,
+ decaf::io::DataOutputStream* out )
throw ( decaf::io::IOException );
/**
- * Packet based un-marshaling
+ * Stream based un-marshaling, blocks on reads on the input stream until a complete
+ * command has been read and unmarshaled into the correct form. Returns a Pointer
+ * to the newly unmarshaled Command.
+ *
+ * @param transport - Pointer to the transport that is making this request.
* @param in - the input stream to read the command from.
* @returns the newly marshaled Command, caller owns the pointer
* @throws IOException
*/
- virtual Pointer<Command> unmarshal( decaf::io::DataInputStream* in )
+ virtual Pointer<commands::Command> unmarshal( const activemq::transport::Transport* transport,
+ decaf::io::DataInputStream* in )
throw ( decaf::io::IOException );
/**
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/stomp/marshal/Marshaler.cpp Wed Apr 29 15:22:28 2009
@@ -106,14 +106,6 @@
return this->marshalConsumerInfo( command );
} else if( command->isRemoveSubscriptionInfo() ) {
return this->marshalRemoveSubscriptionInfo( command );
- } else if( command->isResponseRequired() ) {
-
- // Send a fake Unsub command and ask for a receipt.
- Pointer<StompFrame> frame( new StompFrame() );
- frame->setCommand( StompCommandConstants::UNSUBSCRIBE );
- frame->setProperty( StompCommandConstants::HEADER_ID, "-1" );
- frame->setProperty( StompCommandConstants::HEADER_RECEIPT_REQUIRED,
- Integer::toString( command->getCommandId() ) );
}
// Ignoring this command.
@@ -325,10 +317,16 @@
frame->setProperty( StompCommandConstants::HEADER_ID,
helper.convertConsumerId( info->getConsumerId() ) );
- frame->setProperty( StompCommandConstants::HEADER_SUBSCRIPTIONNAME,
- info->getSubscriptionName() );
- frame->setProperty( StompCommandConstants::HEADER_SELECTOR,
- info->getSelector() );
+ if( info->getSubscriptionName() != "" ) {
+ frame->setProperty( StompCommandConstants::HEADER_SUBSCRIPTIONNAME,
+ info->getSubscriptionName() );
+ }
+
+ if( info->getSelector() != "" ) {
+ frame->setProperty( StompCommandConstants::HEADER_SELECTOR,
+ info->getSelector() );
+ }
+
frame->setProperty( StompCommandConstants::HEADER_ACK, "client" );
if( info->isNoLocal() ) {
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.cpp?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.cpp Wed Apr 29 15:22:28 2009
@@ -82,7 +82,8 @@
return Pointer<wireformat::WireFormatNegotiator>();
}
- virtual Pointer<commands::Command> unmarshal( decaf::io::DataInputStream* inputStream )
+ virtual Pointer<commands::Command> unmarshal( const activemq::transport::Transport* transport AMQCPP_UNUSED,
+ decaf::io::DataInputStream* inputStream )
throw ( IOException ){
try{
@@ -134,6 +135,7 @@
}
virtual void marshal( const Pointer<commands::Command>& command,
+ const activemq::transport::Transport* transport AMQCPP_UNUSED,
decaf::io::DataOutputStream* outputStream )
throw (IOException)
{
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/correlator/ResponseCorrelatorTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/correlator/ResponseCorrelatorTest.cpp?rev=769797&r1=769796&r2=769797&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/correlator/ResponseCorrelatorTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/correlator/ResponseCorrelatorTest.cpp Wed Apr 29 15:22:28 2009
@@ -112,6 +112,10 @@
this->listener = listener;
}
+ virtual TransportListener* getTransportListener() const {
+ return this->listener;
+ }
+
virtual void start() throw( cms::CMSException ){
close();