Author: tabish
Date: Thu Oct 28 18:00:59 2010
New Revision: 1028404

URL: http://svn.apache.org/viewvc?rev=1028404&view=rev
Log:
Set the message type field properly in the consumer receive methods.

Modified:
    activemq/activemq-cpp/trunk/activemq-c/src/main/c/CMS_MessageConsumer.cpp

Modified: 
activemq/activemq-cpp/trunk/activemq-c/src/main/c/CMS_MessageConsumer.cpp
URL: 
http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-c/src/main/c/CMS_MessageConsumer.cpp?rev=1028404&r1=1028403&r2=1028404&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-c/src/main/c/CMS_MessageConsumer.cpp 
(original)
+++ activemq/activemq-cpp/trunk/activemq-c/src/main/c/CMS_MessageConsumer.cpp 
Thu Oct 28 18:00:59 2010
@@ -20,6 +20,12 @@
 #include <Config.h>
 #include <types/CMS_Types.h>
 
+#include <cms/Message.h>
+#include <cms/TextMessage.h>
+#include <cms/BytesMessage.h>
+#include <cms/StreamMessage.h>
+#include <cms/MapMessage.h>
+
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -127,10 +133,25 @@ cms_status consumerReceive(CMS_MessageCo
 
             cms::Message* msg = consumer->consumer->receive();
 
-            wrapper->message = msg;
-            // TODO set the message type
+            if(msg != NULL) {
+                wrapper->message = msg;
+
+                if(dynamic_cast<cms::TextMessage*>(msg) != NULL) {
+                   wrapper->type = CMS_TEXT_MESSAGE;
+                } else if(dynamic_cast<cms::BytesMessage*>(msg) != NULL) {
+                    wrapper->type = CMS_BYTES_MESSAGE;
+                } else if(dynamic_cast<cms::MapMessage*>(msg) != NULL) {
+                    wrapper->type = CMS_MAP_MESSAGE;
+                } else if(dynamic_cast<cms::StreamMessage*>(msg) != NULL) {
+                    wrapper->type = CMS_STREAM_MESSAAGE;
+                } else {
+                    wrapper->type = CMS_MESSAGE;
+                }
 
-            *message = wrapper.release();
+                *message = wrapper.release();
+            } else {
+                *message = NULL;
+            }
 
         } catch(...) {
             result = CMS_ERROR;
@@ -155,7 +176,19 @@ cms_status consumerReceiveWithTimeout(CM
 
             if (msg != NULL) {
                 wrapper->message = msg;
-                // TODO set the message type
+
+                if(dynamic_cast<cms::TextMessage*>(msg) != NULL) {
+                   wrapper->type = CMS_TEXT_MESSAGE;
+                } else if(dynamic_cast<cms::BytesMessage*>(msg) != NULL) {
+                    wrapper->type = CMS_BYTES_MESSAGE;
+                } else if(dynamic_cast<cms::MapMessage*>(msg) != NULL) {
+                    wrapper->type = CMS_MAP_MESSAGE;
+                } else if(dynamic_cast<cms::StreamMessage*>(msg) != NULL) {
+                    wrapper->type = CMS_STREAM_MESSAAGE;
+                } else {
+                    wrapper->type = CMS_MESSAGE;
+                }
+
                 *message = wrapper.release();
             } else {
                 *message = NULL;
@@ -185,7 +218,17 @@ cms_status consumerReceiveNoWait(CMS_Mes
             if (msg != NULL) {
                 wrapper->message = msg;
 
-                // TODO set the message type
+                if(dynamic_cast<cms::TextMessage*>(msg) != NULL) {
+                   wrapper->type = CMS_TEXT_MESSAGE;
+                } else if(dynamic_cast<cms::BytesMessage*>(msg) != NULL) {
+                    wrapper->type = CMS_BYTES_MESSAGE;
+                } else if(dynamic_cast<cms::MapMessage*>(msg) != NULL) {
+                    wrapper->type = CMS_MAP_MESSAGE;
+                } else if(dynamic_cast<cms::StreamMessage*>(msg) != NULL) {
+                    wrapper->type = CMS_STREAM_MESSAAGE;
+                } else {
+                    wrapper->type = CMS_MESSAGE;
+                }
 
                 *message = wrapper.release();
             } else {


Reply via email to