summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarryl L. Pierce <mcpierce@apache.org>2013-09-18 21:15:19 +0000
committerDarryl L. Pierce <mcpierce@apache.org>2013-09-18 21:15:19 +0000
commitd32d34c356bf04e82c531f54ecfcb718b95e9673 (patch)
treee5433fa697e0500a52ec43ef2382da35c1e4b52e
parent199bdab9674606e379654db00913cc27ff702a92 (diff)
downloadqpid-python-d32d34c356bf04e82c531f54ecfcb718b95e9673.tar.gz
QPID-4924: Created the console Python example app.
It allows the user to send messages tot he server example app and get messages back. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1524573 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--cpp/bindings/qpid/python/ChangeLog2
-rwxr-xr-xpython/examples/api/console99
2 files changed, 100 insertions, 1 deletions
diff --git a/cpp/bindings/qpid/python/ChangeLog b/cpp/bindings/qpid/python/ChangeLog
index db527d1507..ff6704cdd6 100644
--- a/cpp/bindings/qpid/python/ChangeLog
+++ b/cpp/bindings/qpid/python/ChangeLog
@@ -2,4 +2,4 @@ Version 0.26:
* QPID-4952: Changed the module name to qpid_messaging.
* QPID-5140: Added get/set method to MessageProperties.
* QPID-4924: Added examples from pure Python libraries.
- * Added the console example to interact with server.
+ * QPID-4924: Added the console example to interact with server.
diff --git a/python/examples/api/console b/python/examples/api/console
new file mode 100755
index 0000000000..2facc368c3
--- /dev/null
+++ b/python/examples/api/console
@@ -0,0 +1,99 @@
+#!/usr/bin/env python
+#
+# 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.
+#
+
+import optparse, sys, traceback
+
+try:
+ from qpid_messaging import *
+except:
+ from qpid.messaging import *
+
+parser = optparse.OptionParser(usage="usage: %prog [options] ADDRESS ...",
+ description="handle requests from the supplied address.")
+parser.add_option("-b", "--broker", default="localhost",
+ help="connect to specified BROKER (default %default)")
+parser.add_option("-r", "--reconnect", action="store_true",
+ help="enable auto reconnect")
+parser.add_option("-i", "--reconnect-interval", type="float", default=3,
+ help="interval between reconnect attempts")
+parser.add_option("-l", "--reconnect-limit", type="int", default=10,
+ help="maximum number of reconnect attempts")
+parser.add_option("-v", dest="verbose", action="store_true",
+ help="enable logging")
+
+opts, args = parser.parse_args()
+
+if args:
+ addr = args.pop(0)
+else:
+ parser.error("address is required")
+
+conn = Connection(opts.broker,
+ reconnect=opts.reconnect,
+ reconnect_interval=opts.reconnect_interval,
+ reconnect_limit=opts.reconnect_limit)
+
+try:
+ conn.open()
+ session = conn.session()
+ sender = session.sender(addr)
+ response_queue = "response-queue;{create:always}"
+ receiver = session.receiver(response_queue)
+ receiver.capacity = 10
+
+ while True:
+ cmdtype = None
+ data = None
+ input = raw_input("Type (eval/shell/exit, ENTER=shell):")
+ if input != "exit":
+ if input == "eval":
+ cmdtype = input
+ data = raw_input("Text to evaluate: ")
+ elif input == "shell" or input == "":
+ cmdtype = "shell"
+ data = raw_input("Shell cmd: ")
+
+ if cmdtype != None and data != "":
+ msg = Message()
+ msg.properties["type"] = cmdtype
+ # TODO: fix this
+ # msg.setProperty("type", cmdtype)
+ msg.content = data
+ msg.reply_to = response_queue
+ try:
+ sender.send(msg)
+ response = receiver.fetch()
+ print "Response:"
+ print "%s" % response.content
+ session.acknowledge(response)
+ except SendError, e:
+ print e
+ else:
+ break
+ if sender is not None:
+ sender.close()
+ if receiver is not None:
+ receiver.close()
+except ReceiverError, e:
+ print e
+except KeyboardInterrupt:
+ pass
+
+conn.close()