summaryrefslogtreecommitdiff
path: root/examples/win32-interrupt
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2014-11-11 11:53:55 -0500
committerMicah Anderson <micah@riseup.net>2014-11-11 11:53:55 -0500
commit7d5c3dcd969161322deed6c43f8a6a3cb92c3369 (patch)
tree109b05c88c7252d7609ef324d62ef9dd7f06123f /examples/win32-interrupt
parent44be832c5708baadd146cb954befbc3dcad8d463 (diff)
upgrade to 14.4.1upstream/14.4.1
Diffstat (limited to 'examples/win32-interrupt')
-rw-r--r--examples/win32-interrupt/display.py45
-rw-r--r--examples/win32-interrupt/prompt.py39
2 files changed, 84 insertions, 0 deletions
diff --git a/examples/win32-interrupt/display.py b/examples/win32-interrupt/display.py
new file mode 100644
index 0000000..25da5d9
--- /dev/null
+++ b/examples/win32-interrupt/display.py
@@ -0,0 +1,45 @@
+"""The display part of a simply two process chat app."""
+
+# This file has been placed in the public domain.
+
+
+import zmq
+from zmq.utils.win32 import allow_interrupt
+
+
+def main(addrs):
+ context = zmq.Context()
+ control = context.socket(zmq.PUB)
+ control.bind('inproc://control')
+ updates = context.socket(zmq.SUB)
+ updates.setsockopt(zmq.SUBSCRIBE, "")
+ updates.connect('inproc://control')
+ for addr in addrs:
+ print "Connecting to: ", addr
+ updates.connect(addr)
+
+ def interrupt_polling():
+ """Fix CTRL-C on Windows using "self pipe trick"."""
+ control.send_multipart(['', 'quit'])
+
+ with allow_interrupt(interrupt_polling):
+ message = ''
+ while message != 'quit':
+ message = updates.recv_multipart()
+ if len(message) < 2:
+ print 'Invalid message.'
+ continue
+ account = message[0]
+ message = ' '.join(message[1:])
+ if message == 'quit':
+ print 'Killed by "%s".' % account
+ break
+ print '%s: %s' % (account, message)
+
+
+if __name__ == '__main__':
+ import sys
+ if len(sys.argv) < 2:
+ print "usage: display.py <address> [,<address>...]"
+ raise SystemExit
+ main(sys.argv[1:])
diff --git a/examples/win32-interrupt/prompt.py b/examples/win32-interrupt/prompt.py
new file mode 100644
index 0000000..96dc5c6
--- /dev/null
+++ b/examples/win32-interrupt/prompt.py
@@ -0,0 +1,39 @@
+"""The prompt part of a simply two process chat app."""
+
+#
+# Copyright (c) 2010 Andrew Gwozdziewycz
+#
+# This file is part of pyzmq.
+#
+# pyzmq is free software; you can redistribute it and/or modify it under
+# the terms of the Lesser GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# pyzmq is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# Lesser GNU General Public License for more details.
+#
+# You should have received a copy of the Lesser GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import zmq
+
+def main(addr, account):
+
+ ctx = zmq.Context()
+ socket = ctx.socket(zmq.PUB)
+ socket.bind(addr)
+
+ while True:
+ message = raw_input("%s> " % account)
+ socket.send_multipart((account, message))
+
+
+if __name__ == '__main__':
+ import sys
+ if len(sys.argv) != 3:
+ print "usage: prompt.py <address> <username>"
+ raise SystemExit
+ main(sys.argv[1], sys.argv[2])