def abort_io(self, iocb, err):
    'Called by a local client or a local controlled to abort a transaction.'
    if _debug:
        IOServer._debug('abort_io %r %r', iocb, err)
    if (iocb.ioState == COMPLETED):
        pass
    elif (iocb.ioState == ABORTED):
        pass
    elif self.remoteIOCB.has_key(iocb):
        (clientID, clientAddr) = self.remoteIOCB[iocb]
        del self.remoteIOCB[iocb]
        response = (2, clientID, err)
        if _debug:
            _commlog.debug(('<<< %s: S %s %r' % (_strftime(), clientAddr, response)))
        response = cPickle.dumps(response, 1)
        self.socket.sendto(response, clientAddr)
    else:
        IOServer._error('no reference to aborting iocb: %r', iocb)
    iocb.ioState = ABORTED
    iocb.ioError = err
    iocb.trigger()
Called by a local client or a local controlled to abort a transaction.
def abort_io(self, iocb, err):
    
    if _debug:
        IOServer._debug('abort_io %r %r', iocb, err)
    if (iocb.ioState == COMPLETED):
        pass
    elif (iocb.ioState == ABORTED):
        pass
    elif self.remoteIOCB.has_key(iocb):
        (clientID, clientAddr) = self.remoteIOCB[iocb]
        del self.remoteIOCB[iocb]
        response = (2, clientID, err)
        if _debug:
            _commlog.debug(('<<< %s: S %s %r' % (_strftime(), clientAddr, response)))
        response = cPickle.dumps(response, 1)
        self.socket.sendto(response, clientAddr)
    else:
        IOServer._error('no reference to aborting iocb: %r', iocb)
    iocb.ioState = ABORTED
    iocb.ioError = err
    iocb.trigger()