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

def pump(self):

    self.clientIO.seek(0)
    self.serverIO.seek(0)
    cData = self.clientIO.read()
    sData = self.serverIO.read()
    self.clientIO.seek(0)
    self.serverIO.seek(0)
    self.clientIO.truncate()
    self.serverIO.truncate()
    for byte in cData:
        self.server.dataReceived(byte)
    for byte in sData:
        self.client.dataReceived(byte)
    if (cData or sData):
        return 1
    else:
        return 0
