diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2012-05-29 14:28:14 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2012-05-29 14:28:14 +0000 |
commit | a0acb74a76686aa459959fcabd0acd9b4601976f (patch) | |
tree | 653a8c595cdf47f37c2d06129b2f0194c7cfa329 | |
parent | 2a2e7d6d5282cb96993a68018372f441f2bf237f (diff) | |
download | qpid-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
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 Binary files differnew file mode 100644 index 0000000000..3be238dbb0 --- /dev/null +++ b/qpid/java/lib/qpid_cpp_jni.jar |