~djfroofy/twisted/5013-txAfterResponse

« back to all changes in this revision

Viewing changes to twisted/internet/iocpreactor/tcp.py

  • Committer: pahan
  • Date: 2011-03-17 02:34:22 UTC
  • Revision ID: svn-v4:bbbe8e31-12d6-0310-92fd-ac37d47ddeeb:trunk:31217
Merge iocp-tcp-large-write-3233-2

Author: PenguinOfDoom
Reviewer: exarkun
Fixes: #3233

Remove immediate successful completion handling for all overlapped operations.

Show diffs side-by-side

added added

removed removed

Lines of Context:
107
107
 
108
108
 
109
109
    def writeToHandle(self, buff, evt):
110
 
        return _iocp.send(self.getFileHandle(), buff, evt)
 
110
        """
 
111
        Send C{buff} to current file handle using C{_iocp.send}. The buffer
 
112
        sent is limited to a size of C{self.SEND_LIMIT}.
 
113
        """
 
114
        return _iocp.send(self.getFileHandle(),
 
115
            buffer(buff, 0, self.SEND_LIMIT), evt)
111
116
 
112
117
 
113
118
    def _closeWriteConnection(self):
341
346
        evt = _iocp.Event(self.cbConnect, self)
342
347
 
343
348
        rc = _iocp.connect(self.socket.fileno(), self.realAddress, evt)
344
 
        if rc == ERROR_IO_PENDING:
345
 
            return
346
 
        else:
347
 
            evt.ignore = True
 
349
        if rc and rc != ERROR_IO_PENDING:
348
350
            self.cbConnect(rc, 0, 0, evt)
349
351
 
350
352
 
456
458
 
457
459
    sessionno = 0
458
460
 
459
 
    maxAccepts = 100
460
 
 
461
461
    # Actual port number being listened on, only set to a non-None
462
462
    # value when we are actually listening.
463
463
    _realPortNumber = None
620
620
 
621
621
 
622
622
    def doAccept(self):
623
 
        numAccepts = 0
624
 
        while 1:
625
 
            evt = _iocp.Event(self.cbAccept, self)
626
 
 
627
 
            # see AcceptEx documentation
628
 
            evt.buff = buff = _iocp.AllocateReadBuffer(2 * (self.addrLen + 16))
629
 
 
630
 
            evt.newskt = newskt = self.reactor.createSocket(self.addressFamily,
631
 
                                                            self.socketType)
632
 
            rc = _iocp.accept(self.socket.fileno(), newskt.fileno(), buff, evt)
633
 
 
634
 
            if (rc == ERROR_IO_PENDING
635
 
                or (not rc and numAccepts >= self.maxAccepts)):
636
 
                break
637
 
            else:
638
 
                evt.ignore = True
639
 
                if not self.handleAccept(rc, evt):
640
 
                    break
641
 
            numAccepts += 1
 
623
        evt = _iocp.Event(self.cbAccept, self)
 
624
 
 
625
        # see AcceptEx documentation
 
626
        evt.buff = buff = _iocp.AllocateReadBuffer(2 * (self.addrLen + 16))
 
627
 
 
628
        evt.newskt = newskt = self.reactor.createSocket(self.addressFamily,
 
629
                                                        self.socketType)
 
630
        rc = _iocp.accept(self.socket.fileno(), newskt.fileno(), buff, evt)
 
631
 
 
632
        if rc and rc != ERROR_IO_PENDING:
 
633
            self.handleAccept(rc, evt)
642
634
 
643
635