File: basic.py

package info (click to toggle)
python-eventlet 0.9.16-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,884 kB
  • sloc: python: 16,306; makefile: 97
file content (41 lines) | stat: -rw-r--r-- 936 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from twisted.protocols import basic
from twisted.internet.error import ConnectionDone
from eventlet.twistedutil.protocol import GreenTransportBase


class LineOnlyReceiver(basic.LineOnlyReceiver):

    def __init__(self, recepient):
        self._recepient = recepient

    def connectionMade(self):
        self._recepient._got_transport(self.transport)

    def connectionLost(self, reason):
        self._recepient._connectionLost(reason)

    def lineReceived(self, line):
        self._recepient._got_data(line)


class LineOnlyReceiverTransport(GreenTransportBase):

    protocol_class = LineOnlyReceiver

    def readline(self):
        return self._wait()

    def sendline(self, line):
        self.protocol.sendLine(line)

    # iterator protocol:

    def __iter__(self):
        return self

    def next(self):
        try:
            return self.readline()
        except ConnectionDone:
            raise StopIteration