You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2006/09/26 17:28:19 UTC
svn commit: r450084 -
/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Tester.cpp
Author: jstrachan
Date: Tue Sep 26 08:28:18 2006
New Revision: 450084
URL: http://svn.apache.org/viewvc?view=rev&rev=450084
Log:
Added a little example program showing how to use CMS so we can link to it from the Wiki
Added:
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Tester.cpp (with props)
Added: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Tester.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Tester.cpp?view=auto&rev=450084
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Tester.cpp (added)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Tester.cpp Tue Sep 26 08:28:18 2006
@@ -0,0 +1,173 @@
+/*
+ * 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.
+ */
+
+#include <activemq/ActiveMQTextMessage.h>
+#include <activemq/ActiveMQBytesMessage.h>
+#include <cms/TopicConnectionFactory.h>
+#include <cms/TopicConnection.h>
+#include <cms/TopicSession.h>
+#include <cms/TopicSubscriber.h>
+#include <cms/Topic.h>
+#include <activemq/ActiveMQConnectionFactory.h>
+#include <cms/MessageListener.h>
+#include <cms/ExceptionListener.h>
+#include <cms/TopicPublisher.h>
+
+#include <stdlib.h>
+#include <sys/time.h>
+#include <iostream>
+
+using namespace std;
+
+class Tester
+:
+ public cms::ExceptionListener,
+ public cms::MessageListener
+{
+public:
+
+ Tester(){numReceived = 0;}
+ virtual ~Tester(){}
+
+ void test(){
+
+ try{
+
+ int messagesPerType = 3000;
+ int sleepTime = 2;
+
+ printf("Starting activemqcms test (sending %d messages per type and sleeping %d seconds) ...\n", messagesPerType, sleepTime );
+
+ // START SNIPPET: demo
+ cms::TopicConnectionFactory* connectionFactory = new activemq::ActiveMQConnectionFactory( "127.0.0.1:61613" );
+ cms::TopicConnection* connection = connectionFactory->createTopicConnection();
+ connection->setExceptionListener( this );
+ connection->start();
+ cms::TopicSession* session = connection->createTopicSession( false );
+ cms::Topic* topic = session->createTopic("mytopic");
+ cms::TopicSubscriber* subscriber = session->createSubscriber( topic );
+ subscriber->setMessageListener( this );
+ cms::TopicPublisher* publisher = session->createPublisher( topic );
+
+ // Send some text messages.
+ const char* text = "this is a test!";
+ cms::TextMessage* textMsg = session->createTextMessage( text );
+ for( int ix=0; ix<messagesPerType; ++ix ){
+ publisher->publish( textMsg );
+ doSleep();
+ }
+
+ // Send some bytes messages.
+ char buf[10];
+ memset( buf, 0, 10 );
+ buf[0] = 0;
+ buf[1] = 1;
+ buf[2] = 2;
+ buf[3] = 3;
+ buf[4] = 0;
+ buf[5] = 4;
+ buf[6] = 5;
+ buf[7] = 6;
+ cms::BytesMessage* bytesMsg = session->createBytesMessage();
+ bytesMsg->setData( buf, 10 );
+ for( int ix=0; ix<messagesPerType; ++ix ){
+ publisher->publish( bytesMsg );
+ doSleep();
+ }
+ // END SNIPPET: demo
+
+ sleep( sleepTime );
+
+ printf("received: %d\n", numReceived );
+
+ sleep( 5 );
+
+ printf("unsubscribing\n" );
+ delete publisher;
+ subscriber->close();
+ delete subscriber;
+
+ sleep( 5 );
+
+ session->close();
+ delete session;
+ connection->close();
+ delete connection;
+ delete connectionFactory;
+
+ }catch( cms::CMSException& ex ){
+ printf("StompTester::test() - %s\n", ex.getMessage() );
+ }
+ }
+
+ virtual void onMessage( const cms::Message* message ){
+
+ // Got a text message.
+ const cms::TextMessage* txtMsg = dynamic_cast<const cms::TextMessage*>(message);
+ if( txtMsg != NULL ){
+ //printf("received text msg: %s\n", txtMsg->getText() );
+ }
+
+ // Got a bytes msg.
+ const cms::BytesMessage* bytesMsg = dynamic_cast<const cms::BytesMessage*>(message);
+ if( bytesMsg != NULL ){
+ /*printf("received bytes msg: " );
+ const char* bytes = bytesMsg->getData();
+ int numBytes = bytesMsg->getNumBytes();
+ for( int ix=0; ix<numBytes; ++ix ){
+ printf("[%d]", bytes[ix] );
+ }
+ printf("\n");*/
+ }
+
+ numReceived++;
+ }
+
+ virtual void onException( const cms::CMSException* error ){
+ printf( "StompTester::onException() - %s\n", error->getMessage() );
+ }
+
+ virtual void doSleep() {
+ timespec sleepTime;
+ sleepTime.tv_sec = 0;
+ sleepTime.tv_nsec = 1000;
+ nanosleep( &sleepTime, &sleepTime );
+ }
+
+private:
+
+ int numReceived;
+};
+
+int main(int argc, char *argv[]){
+ try{
+
+ Tester tester;
+ tester.test();
+
+ }catch( ... ){
+ printf("main - caught unknown exception\n" );
+ }
+
+ printf("done");
+
+ cout.flush();
+
+ return 0;
+}
+
+
Propchange: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Tester.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test-integration/Tester.cpp
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL