def __init__(self, sockManager): self.pollObj = AsyncPoll(sockManager) self._allConns = set() self._wantsToSend = set() self._wantsToRecv = set() self.connIdToConnInfo = {}
class RealSocketStatus: def __init__(self, sockManager): self.pollObj = AsyncPoll(sockManager) self._allConns = set() self._wantsToSend = set() self._wantsToRecv = set() self.connIdToConnInfo = {} def _updateState(self, connId): state = POLLERROR if connId in self._wantsToSend: state |= POLLOUT if connId in self._wantsToRecv: state |= POLLIN self.pollObj.register(connId, state) def addConn(self, connId, destId): self._allConns.add(connId) self._updateState(connId) self.connIdToConnInfo[connId] = destId def removeConn(self, connId): self._allConns.remove(connId) self._wantsToSend.discard(connId) self._wantsToRecv.discard(connId) self.pollObj.unregister(connId) del self.connIdToConnInfo[connId] def connExists(self, connId): return connId in self._allConns def getConnInfo(self, connId): return self.connIdToConnInfo[connId] def setWantsToSend(self, want, connId): if want: assert not connId in self._wantsToSend,'state out of sync!' self._wantsToSend.add(connId) else: self._wantsToSend.remove(connId) self._updateState(connId) def setWantsToRecv(self, want, connId): if want: assert not connId in self._wantsToRecv,'state out of sync!' self._wantsToRecv.add(connId) else: self._wantsToRecv.remove(connId) self._updateState(connId) def getConnEvents(self): return self.pollObj.poll(1000)