Пример #1
0
    def startReading(self):
        if self.state != "connected":
            return
        if self._read_op_pending:
            # there is a read op pending. handle_connected_readDone will re-call
            # startReading if necessary.
            return
        self.reading = True

        if time.clock() - self.started_reading > 5:
            # too long since the last read. start small again
            from twisted.internet import reactor
            self.bufferSize = self.initialBufferSize
            self.readbuf = reactor.AllocateReadBuffer(self.bufferSize)
        self.started_reading = time.clock()

        while self.producerBuffer:
            item = self.producerBuffer.pop(0)
            self.protocol.dataReceived(item)
            if not self.reading:
                return
        try:
            self.read_op.initiateOp(self.socket.fileno(), self.readbuf)
        except WindowsError, we:
            #log.msg("initiating read failed with args %s" % (we,))
            self.reactor.callLater(0, self.connectionLost,
                                   failure.Failure(main.CONNECTION_DONE))
Пример #2
0
 def __init__(self, bindAddress, proto, maxPacketSize=8192):
     assert isinstance(proto, protocol.DatagramProtocol)
     self.state = "disconnected"
     from twisted.internet import reactor
     self.bindAddress = bindAddress
     self._connectedAddr = None
     self.protocol = proto
     self.maxPacketSize = maxPacketSize
     self.logstr = reflect.qual(self.protocol.__class__) + " (UDP)"
     self.read_op = self.read_op_class(self)
     self.readbuf = reactor.AllocateReadBuffer(maxPacketSize)
     self.reactor = reactor
Пример #3
0
 def __init__(self, socket, protocol, sockfactory):
     self.state = "connected"
     from twisted.internet import reactor
     self.socket = socket
     self.protocol = protocol
     self.sf = sockfactory
     self.writebuf = []
     self.readbuf = reactor.AllocateReadBuffer(self.bufferSize)
     self.reactor = reactor
     self.bufferEvents = {"buffer full": Set(), "buffer empty": Set()}
     self.offset = 0
     self.writeBufferedSize = 0
     self.producerBuffer = []
     self.read_op = ReadFileOp(self)
     self.write_op = WriteFileOp(
         self
     )  # XXX: these two should be specified like before, with a class field
Пример #4
0
 def _resizeBuffer(self):
     newBufferSize = min(self.maxBufferSize, self.bufferSize * 2)
     if newBufferSize != self.bufferSize:
         from twisted.internet import reactor
         self.bufferSize = newBufferSize
         self.readbuf = reactor.AllocateReadBuffer(self.bufferSize)