summaryrefslogtreecommitdiffstats
path: root/external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_sub.py
diff options
context:
space:
mode:
Diffstat (limited to 'external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_sub.py')
-rw-r--r--external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_sub.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_sub.py b/external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_sub.py
new file mode 100644
index 00000000..4a61fb55
--- /dev/null
+++ b/external_libs/python/pyzmq-14.7.0/examples/pubsub/topics_sub.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+"""Simple example of publish/subscribe illustrating topics.
+
+Publisher and subscriber can be started in any order, though if publisher
+starts first, any messages sent before subscriber starts are lost. More than
+one subscriber can listen, and they can listen to different topics.
+
+Topic filtering is done simply on the start of the string, e.g. listening to
+'s' will catch 'sports...' and 'stocks' while listening to 'w' is enough to
+catch 'weather'.
+"""
+
+#-----------------------------------------------------------------------------
+# Copyright (c) 2010 Brian Granger, Fernando Perez
+#
+# Distributed under the terms of the New BSD License. The full license is in
+# the file COPYING.BSD, distributed as part of this software.
+#-----------------------------------------------------------------------------
+
+import sys
+import time
+
+import zmq
+import numpy
+
+def main():
+ if len (sys.argv) < 2:
+ print 'usage: subscriber <connect_to> [topic topic ...]'
+ sys.exit (1)
+
+ connect_to = sys.argv[1]
+ topics = sys.argv[2:]
+
+ ctx = zmq.Context()
+ s = ctx.socket(zmq.SUB)
+ s.connect(connect_to)
+
+ # manage subscriptions
+ if not topics:
+ print "Receiving messages on ALL topics..."
+ s.setsockopt(zmq.SUBSCRIBE,'')
+ else:
+ print "Receiving messages on topics: %s ..." % topics
+ for t in topics:
+ s.setsockopt(zmq.SUBSCRIBE,t)
+ print
+ try:
+ while True:
+ topic, msg = s.recv_multipart()
+ print ' Topic: %s, msg:%s' % (topic, msg)
+ except KeyboardInterrupt:
+ pass
+ print "Done."
+
+if __name__ == "__main__":
+ main()