summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2012-05-29 14:28:14 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2012-05-29 14:28:14 +0000
commita0acb74a76686aa459959fcabd0acd9b4601976f (patch)
tree653a8c595cdf47f37c2d06129b2f0194c7cfa329
parent2a2e7d6d5282cb96993a68018372f441f2bf237f (diff)
downloadqpid-python-a0acb74a76686aa459959fcabd0acd9b4601976f.tar.gz
QPID-40027 Experimental CPP binding. Added a very quick and dirty
implementation as a POC.Can send and receive a message atm. git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/address-refactor2@1343748 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnection.java54
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnectionFactory.java43
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppReceiver.java87
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSender.java77
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSession.java136
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java37
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java193
-rw-r--r--qpid/java/lib/qpid_cpp_jni.jarbin0 -> 23847 bytes
8 files changed, 627 insertions, 0 deletions
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnection.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnection.java
new file mode 100644
index 0000000000..a131ebe2fc
--- /dev/null
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnection.java
@@ -0,0 +1,54 @@
+package org.apache.qpid.messaging.cpp;
+
+import org.apache.qpid.messaging.Connection;
+import org.apache.qpid.messaging.Session;
+
+public class CppConnection implements Connection
+{
+ private org.apache.qpid.messaging.cpp.jni.Connection _cppConn;
+
+ public CppConnection(String url)
+ {
+ _cppConn = new org.apache.qpid.messaging.cpp.jni.Connection(url);
+ }
+
+ @Override
+ public void open()
+ {
+ _cppConn.open();
+ }
+
+ @Override
+ public boolean isOpen()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void close()
+ {
+ _cppConn.close();
+ }
+
+ @Override
+ public Session createSession(String name)
+ {
+ return new CppSession(_cppConn.createSession());
+ }
+
+ @Override
+ public Session createTransactionalSession(String name)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getAuthenticatedUsername()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnectionFactory.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnectionFactory.java
new file mode 100644
index 0000000000..3339c29563
--- /dev/null
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppConnectionFactory.java
@@ -0,0 +1,43 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.qpid.messaging.cpp;
+
+import org.apache.qpid.messaging.Connection;
+import org.apache.qpid.messaging.ConnectionFactory;
+
+public class CppConnectionFactory extends ConnectionFactory
+{
+ static
+ {
+ System.loadLibrary("cqpid_java");
+ }
+
+ public CppConnectionFactory()
+ {
+ }
+
+ public Connection create(String url)
+ {
+ return new CppConnection(url);
+ }
+
+ public Connection createConnection(String url)
+ {
+ return create(url);
+ }
+}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppReceiver.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppReceiver.java
new file mode 100644
index 0000000000..baf3c13e41
--- /dev/null
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppReceiver.java
@@ -0,0 +1,87 @@
+package org.apache.qpid.messaging.cpp;
+
+import org.apache.qpid.messaging.Message;
+import org.apache.qpid.messaging.Receiver;
+import org.apache.qpid.messaging.Session;
+
+public class CppReceiver implements Receiver
+{
+ org.apache.qpid.messaging.cpp.jni.Receiver _cppReceiver;
+
+ public CppReceiver(org.apache.qpid.messaging.cpp.jni.Receiver cppReceiver)
+ {
+ _cppReceiver = cppReceiver;
+ }
+
+ @Override
+ public Message get(long timeout)
+ {
+ org.apache.qpid.messaging.cpp.jni.Message m = _cppReceiver.get();
+ return new TextMessage(m.getContent());
+
+ }
+
+ @Override
+ public Message fetch(long timeout)
+ {
+ org.apache.qpid.messaging.cpp.jni.Message m = _cppReceiver.fetch();
+ return new TextMessage(m.getContent());
+ }
+
+ @Override
+ public void setCapacity(int capacity)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public int getCapacity()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public int getAvailable()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public int getUnsettled()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void close()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isClosed()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String getName()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Session getSession()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSender.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSender.java
new file mode 100644
index 0000000000..54389e8bcd
--- /dev/null
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSender.java
@@ -0,0 +1,77 @@
+package org.apache.qpid.messaging.cpp;
+
+import org.apache.qpid.messaging.Message;
+import org.apache.qpid.messaging.Sender;
+import org.apache.qpid.messaging.Session;
+
+public class CppSender implements Sender
+{
+ org.apache.qpid.messaging.cpp.jni.Sender _cppSender;
+
+ public CppSender(org.apache.qpid.messaging.cpp.jni.Sender cppSender)
+ {
+ _cppSender = cppSender;
+ }
+
+ @Override
+ public void send(Message message, boolean sync)
+ {
+ _cppSender.send(((TextMessage)message).getCppMessage(),true);
+ }
+
+ @Override
+ public void close()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setCapacity(int capacity)
+ {
+ //_cppSender.setCapacity(arg0)
+ }
+
+ @Override
+ public int getCapacity()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public int getAvailable()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public int getUnsettled()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public boolean isClosed()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String getName()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Session getSession()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSession.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSession.java
new file mode 100644
index 0000000000..fd59aae323
--- /dev/null
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSession.java
@@ -0,0 +1,136 @@
+package org.apache.qpid.messaging.cpp;
+
+import org.apache.qpid.messaging.Address;
+import org.apache.qpid.messaging.Connection;
+import org.apache.qpid.messaging.Message;
+import org.apache.qpid.messaging.Receiver;
+import org.apache.qpid.messaging.Sender;
+import org.apache.qpid.messaging.Session;
+
+public class CppSession implements Session
+{
+ org.apache.qpid.messaging.cpp.jni.Session _cppSession;
+
+ public CppSession(org.apache.qpid.messaging.cpp.jni.Session cppSsn)
+ {
+ _cppSession = cppSsn;
+ }
+
+
+ @Override
+ public boolean isClosed()
+ {
+ return false;
+ }
+
+ @Override
+ public void close()
+ {
+ _cppSession.close();
+ }
+
+ @Override
+ public void commit()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void rollback()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void acknowledge(boolean sync)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public <T> void acknowledge(Message message, boolean sync)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public <T> void reject(Message message)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public <T> void release(Message message)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void sync(boolean block)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public int getReceivable()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public int getUnsettledAcks()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public Receiver nextReceiver(long timeout)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Sender createSender(Address address)
+ {
+ return new CppSender(_cppSession
+ .createSender(new org.apache.qpid.messaging.cpp.jni.Address(
+ address.toString())));
+ }
+
+ @Override
+ public Sender createSender(String address)
+ {
+ return new CppSender(_cppSession.createSender(address));
+ }
+
+ @Override
+ public Receiver createReceiver(Address address)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Receiver createReceiver(String address)
+ {
+ return new CppReceiver(_cppSession.createReceiver(address));
+ }
+
+ @Override
+ public Connection getConnection()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
new file mode 100644
index 0000000000..f06637637c
--- /dev/null
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
@@ -0,0 +1,37 @@
+package org.apache.qpid.messaging.cpp;
+
+import org.apache.qpid.messaging.Connection;
+import org.apache.qpid.messaging.ConnectionFactory;
+import org.apache.qpid.messaging.Message;
+import org.apache.qpid.messaging.Receiver;
+import org.apache.qpid.messaging.Session;
+import org.apache.qpid.messaging.Sender;
+
+public class CppTest
+{
+
+ public static void main(String[] args)
+ {
+ System.out.println(System.getProperty("sys.path"));
+
+ Connection con = ConnectionFactory.get().createConnection("localhost:5672");
+ con.open();
+ Session ssn = con.createSession("hello");
+ System.out.println("Got a session object " + ssn);
+
+ Sender sender = ssn.createSender("amq.topic/test");
+ System.out.println("Got a Sender object " + sender);
+
+ Receiver receiver = ssn.createReceiver("amq.topic/test");
+ System.out.println("Got a Receiver object " + receiver);
+
+ Message msg = new TextMessage("Hello World");
+ sender.send(msg, false);
+ TextMessage m = (TextMessage) receiver.fetch(0);
+ System.out.println("Received message " + m + " with content type : " + m.getContentType() + " and content : " + m.getContent());
+
+ ssn.close();
+ con.close();
+ }
+
+}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java
new file mode 100644
index 0000000000..7700f2460e
--- /dev/null
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java
@@ -0,0 +1,193 @@
+package org.apache.qpid.messaging.cpp;
+
+import java.util.Map;
+
+public class TextMessage implements org.apache.qpid.messaging.Message
+{
+
+ org.apache.qpid.messaging.cpp.jni.Message _cppMessage;
+
+ public TextMessage(String text)
+ {
+ _cppMessage = new org.apache.qpid.messaging.cpp.jni.Message(text);
+ _cppMessage.setContentType("text/plain");
+ }
+
+ @Override
+ public Object getContent()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getMessageId()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setMessageId(String messageId)
+ {
+ _cppMessage.setMessageId(messageId);
+
+ }
+
+ @Override
+ public String getSubject()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setSubject(String subject)
+ {
+ _cppMessage.setMessageId(subject);
+ }
+
+ @Override
+ public String getContentType()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setContentType(String contentType)
+ {
+ _cppMessage.setContentType(contentType);
+ }
+
+ @Override
+ public String getCorrelationId()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setCorrelationId(String correlationId)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public String getReplyTo()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setReplyTo(String replyTo)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public String getUserId()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setUserId(String userId)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isDurable()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void setDurable(boolean durable)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isRedelivered()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void setRedelivered(boolean redelivered)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public int getPriority()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void setPriority(int priority)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public long getTtl()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void setTtl(long ttl)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public long getTimestamp()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void setTimestamp(long timestamp)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public Map<String, Object> getProperties()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setProperties(Map<String, Object> properties)
+ {
+ // TODO Auto-generated method stub
+ }
+
+ protected org.apache.qpid.messaging.cpp.jni.Message getCppMessage()
+ {
+ return _cppMessage;
+ }
+
+}
diff --git a/qpid/java/lib/qpid_cpp_jni.jar b/qpid/java/lib/qpid_cpp_jni.jar
new file mode 100644
index 0000000000..3be238dbb0
--- /dev/null
+++ b/qpid/java/lib/qpid_cpp_jni.jar
Binary files differ