##// END OF EJS Templates
Add the unlink method to javascript links to maintain compatibility with traitlet links
Add the unlink method to javascript links to maintain compatibility with traitlet links

File last commit:

r13353:0ca701d5
r19390:e461f122
Show More
win32support.py
74 lines | 2.1 KiB | text/x-python | PythonLexer
MinRK
forward subprocess IO over zmq on Windows...
r3771 """Utility for forwarding file read events over a zmq socket.
MinRK
code updates per review of PR #454
r4021 This is necessary because select on Windows only supports sockets, not FDs.
MinRK
update recently changed modules with Authors in docstring
r4018
Authors:
* MinRK
"""
MinRK
forward subprocess IO over zmq on Windows...
r3771
#-----------------------------------------------------------------------------
# Copyright (C) 2011 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import uuid
import zmq
from threading import Thread
Thomas Kluyver
Replace references to unicode and basestring
r13353 from IPython.utils.py3compat import unicode_type
MinRK
forward subprocess IO over zmq on Windows...
r3771 #-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
class ForwarderThread(Thread):
def __init__(self, sock, fd):
Thread.__init__(self)
self.daemon=True
self.sock = sock
self.fd = fd
def run(self):
MinRK
code updates per review of PR #454
r4021 """Loop through lines in self.fd, and send them over self.sock."""
MinRK
forward subprocess IO over zmq on Windows...
r3771 line = self.fd.readline()
# allow for files opened in unicode mode
Thomas Kluyver
Replace references to unicode and basestring
r13353 if isinstance(line, unicode_type):
MinRK
forward subprocess IO over zmq on Windows...
r3771 send = self.sock.send_unicode
else:
send = self.sock.send
while line:
send(line)
line = self.fd.readline()
# line == '' means EOF
self.fd.close()
self.sock.close()
def forward_read_events(fd, context=None):
MinRK
code updates per review of PR #454
r4021 """Forward read events from an FD over a socket.
MinRK
forward subprocess IO over zmq on Windows...
r3771
This method wraps a file in a socket pair, so it can
be polled for read events by select (specifically zmq.eventloop.ioloop)
"""
if context is None:
context = zmq.Context.instance()
push = context.socket(zmq.PUSH)
push.setsockopt(zmq.LINGER, -1)
pull = context.socket(zmq.PULL)
addr='inproc://%s'%uuid.uuid4()
push.bind(addr)
pull.connect(addr)
forwarder = ForwarderThread(push, fd)
forwarder.start()
return pull
MinRK
code updates per review of PR #454
r4021 __all__ = ['forward_read_events']