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))
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
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
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)