'Move data back and forth.
Returns whether any data was moved.'

def pump(self, debug=False):

    if (self.debug or debug):
        print('--    GLUG    --')
    sData = self.serverIO.getOutBuffer()
    cData = self.clientIO.getOutBuffer()
    self.clientIO._checkProducer()
    self.serverIO._checkProducer()
    if (self.debug or debug):
        print('.')
        if cData:
            print(('C:    ' + repr(cData)))
        if sData:
            print(('S:    ' + repr(sData)))
    if cData:
        self.serverIO.bufferReceived(cData)
    if sData:
        self.clientIO.bufferReceived(sData)
    if (cData or sData):
        return True
    if (self.serverIO.disconnecting and (not self.serverIO.disconnected)):
        if (self.debug or debug):
            print('*    C')
        self.serverIO.disconnected = True
        self.clientIO.disconnecting = True
        self.clientIO.reportDisconnect()
        return True
    if (self.clientIO.disconnecting and (not self.clientIO.disconnected)):
        if (self.debug or debug):
            print('*    S')
        self.clientIO.disconnected = True
        self.serverIO.disconnecting = True
        self.serverIO.reportDisconnect()
        return True
    return False
