Beispiel #1
0
class Transport(object):
    """Exchange messages on channel."""

    Receiver = Receiver
    Transmitter = Transmitter

    def __init__(self, loop, stream):
        self.stream = stream
        self.loop = loop
        self._emitter = EventEmitter(loop)
        self._receiver = self.Receiver(self.stream, self._emitter)
        self._transmitter = self.Transmitter(self.stream, self._emitter)

    def write(self, obj, callback=None, request_id=None):
        self._transmitter.write(obj, callback, request_id)

    def subscribe(self, listener):
        self._emitter.subscribe("received", listener)

    def unsubscribe(self, listener):
        self._emitter.unsubscribe("received", listener)

    def start(self):
        self._receiver.start()
        self._transmitter.start()

    def stop(self):
        self._transmitter.stop()
        self._receiver.stop()
        self._emitter.close()
Beispiel #2
0
class Transport(object):
    """Exchange messages on channel."""

    Receiver = Receiver
    Transmitter = Transmitter

    def __init__(self, loop, incoming, outgoing):
        self.loop = loop
        self._emitter = EventEmitter(loop)
        self._receiver = self.Receiver(incoming, self._emitter)
        self._transmitter = self.Transmitter(outgoing, self._emitter)

    def write(self, obj, callback=None, request_id=None):
        self._transmitter.write(obj, callback, request_id)

    def subscribe(self, listener):
        self._emitter.subscribe('received', listener)

    def unsubscribe(self, listener):
        self._emitter.unsubscribe('received', listener)

    def start(self):
        self._receiver.start()
        self._transmitter.start()

    def stop(self):
        self._transmitter.stop()
        self._receiver.stop()
        self._emitter.close()
Beispiel #3
0
class Stream(object):
    """Wrapper for plain file descriptor."""

    def __init__(self, loop, fd):
        self.loop = loop
        self.channel = Pipe(loop)
        self.fd = fd
        self._emitter = EventEmitter(loop)

    def start(self):
        self._emitter.subscribe("WRITE", self._on_write)
        self.channel.open(self.fd)
        self.channel.start_read(self._on_read)

    def write(self, data):
        self._emitter.publish("WRITE", data)

    def subscribe(self, listener):
        self._emitter.subscribe('READ', listener)

    def unsubscribe(self, listener):
        self._emitter.unsubscribe('READ', listener)

    def stop(self, all_events=False):
        if self.channel.active:
            self.channel.close()

        if all_events:
            self._emitter.close()

    def _on_write(self, evtype, data):
        self.channel.write(data)

    def _on_read(self, handle, data, error):
        if not data:
            return

        msg = dict(event='READ', data=data)
        self._emitter.publish('READ', msg)
Beispiel #4
0
class Stream(object):
    """Wrapper for plain file descriptor."""
    def __init__(self, loop, fd):
        self.loop = loop
        self.channel = Pipe(loop)
        self.fd = fd
        self._emitter = EventEmitter(loop)

    def start(self):
        self._emitter.subscribe("WRITE", self._on_write)
        self.channel.open(self.fd)
        self.channel.start_read(self._on_read)

    def write(self, data):
        self._emitter.publish("WRITE", data)

    def subscribe(self, listener):
        self._emitter.subscribe('READ', listener)

    def unsubscribe(self, listener):
        self._emitter.unsubscribe('READ', listener)

    def stop(self, all_events=False):
        if self.channel.active:
            self.channel.close()

        if all_events:
            self._emitter.close()

    def _on_write(self, evtype, data):
        self.channel.write(data)

    def _on_read(self, handle, data, error):
        if not data:
            return

        msg = dict(event='READ', data=data)
        self._emitter.publish('READ', msg)