summaryrefslogtreecommitdiff
path: root/qpid/cpp/bindings
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2012-06-10 23:38:39 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2012-06-10 23:38:39 +0000
commit7cdce1d68b1a796ba7abe93ae27b9683d301d266 (patch)
treec577b3f99ce6b07545f9c8766fb0946a2d63b8fe /qpid/cpp/bindings
parent2012533afb67397403142cd165ecded7e5a0f8bb (diff)
downloadqpid-python-7cdce1d68b1a796ba7abe93ae27b9683d301d266.tar.gz
QPID-4027 Added a toString method to the Message class by using the swig
"%extend" directive. Used the same for moving the methods I introduced in Mesage.h to java.i interface file. The BYTE_BUFFER struct is also moved into the swig file. The only extra methods we need to add to Message.h is to get/set the message headers as raw bytes. git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/address-refactor2@1348683 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/bindings')
-rw-r--r--qpid/cpp/bindings/qpid/java/java.i44
-rw-r--r--qpid/cpp/bindings/swig_java_typemaps.i17
2 files changed, 53 insertions, 8 deletions
diff --git a/qpid/cpp/bindings/qpid/java/java.i b/qpid/cpp/bindings/qpid/java/java.i
index fb5bc6cde7..be7b51ee8b 100644
--- a/qpid/cpp/bindings/qpid/java/java.i
+++ b/qpid/cpp/bindings/qpid/java/java.i
@@ -21,5 +21,49 @@
%include "std_string.i"
%include "../../swig_java_typemaps.i"
+%begin %{
+struct BYTE_BUFFER
+{
+ public :
+ BYTE_BUFFER(): start(0), size(0) {}
+ BYTE_BUFFER(void* p, long s) : start(p), size(s) {}
+ void* getStart() const { return start; }
+ long getSize() const { return size; }
+ private:
+ void* start;
+ long size;
+};
+%}
+
+%extend qpid::messaging::Message {
+
+void setContentAsByteBuffer(const BYTE_BUFFER buf)
+{
+ self->setContent(reinterpret_cast<char*>(buf.getStart()), buf.getSize());
+}
+
+const BYTE_BUFFER getContentAsByteBuffer() const
+{
+ return BYTE_BUFFER(static_cast<void*>(const_cast<char*>(self->getContentPtr())),self->getContentSize());
+}
+
+std::string toString()
+{
+ std::ostringstream toStr;
+ toStr << "{" << std::endl;
+ toStr << " Message-ID=" << self->getMessageId() << std::endl;
+ toStr << " Correlation-ID=" << self->getCorrelationId() << std::endl;
+ toStr << " Subject=" << self->getSubject() << std::endl;
+ toStr << " Durability=" << (self->getDurable()? "true" : "false" ) << std::endl;
+ toStr << " TTL=" << self->getTtl().getMilliseconds() << std::endl;
+ toStr << " Redelivered=" << (self->getRedelivered()? "true" : "false" ) << std::endl;
+ toStr << " Application-Properties=" << self->getProperties() << std::endl;
+ toStr << "}" << std::endl;
+
+ return toStr.str();
+}
+
+}
+
%include "../qpid.i"
diff --git a/qpid/cpp/bindings/swig_java_typemaps.i b/qpid/cpp/bindings/swig_java_typemaps.i
index 139b8399a8..785f5ed73d 100644
--- a/qpid/cpp/bindings/swig_java_typemaps.i
+++ b/qpid/cpp/bindings/swig_java_typemaps.i
@@ -22,6 +22,7 @@
#include "qpid/types/Variant.h"
#include "jni.h"
#include <iostream>
+#include <sstream>
%}
/* =================================================================== */
@@ -47,9 +48,9 @@
* The "jstype" specifies the types exposed in the proxy classes.
* -------------------------------------------------------------------VaraintMapWrapper.h~
*/
-%typemap(jni) qpid::messaging::Message::BYTE_BUFFER "jobject"
-%typemap(jtype) qpid::messaging::Message::BYTE_BUFFER "java.nio.ByteBuffer"
-%typemap(jstype) qpid::messaging::Message::BYTE_BUFFER "java.nio.ByteBuffer"
+%typemap(jni) BYTE_BUFFER "jobject"
+%typemap(jtype) BYTE_BUFFER "java.nio.ByteBuffer"
+%typemap(jstype) BYTE_BUFFER "java.nio.ByteBuffer"
%typemap(jni) qpid::types::Variant::Map& "jlong"
%typemap(jtype) qpid::types::Variant::Map& "long"
@@ -72,19 +73,19 @@
%typemap(jstype) uint64_t "long"
/* -- qpid::messaging::Message::BYTE_BUFFER -- */
-%typemap(in) (qpid::messaging::Message::BYTE_BUFFER) {
+%typemap(in) (BYTE_BUFFER) {
void* start = jenv->GetDirectBufferAddress($input);
long size = (long)(jenv->GetDirectBufferCapacity($input));
- $1 = qpid::messaging::Message::BYTE_BUFFER(start,size);
+ $1 = BYTE_BUFFER(start,size);
}
-%typemap(javain) (qpid::messaging::Message::BYTE_BUFFER) "$module.isBufferDirect($javainput)"
+%typemap(javain) (BYTE_BUFFER) "$module.isBufferDirect($javainput)"
-%typemap(out) qpid::messaging::Message::BYTE_BUFFER {
+%typemap(out) BYTE_BUFFER {
jresult = jenv->NewDirectByteBuffer($1.getStart(), $1.getSize());
}
-%typemap(javaout) qpid::messaging::Message::BYTE_BUFFER {
+%typemap(javaout) BYTE_BUFFER {
return $jnicall;
}