|
@@ -310,11 +310,14 @@ class ConnectionRepository(DirectObject.DirectObject, CConnectionRepository):
|
|
|
def startReaderPollTask(self):
|
|
def startReaderPollTask(self):
|
|
|
# Stop any tasks we are running now
|
|
# Stop any tasks we are running now
|
|
|
self.stopReaderPollTask()
|
|
self.stopReaderPollTask()
|
|
|
|
|
+ self.accept(CConnectionRepository.getOverflowEventName(),
|
|
|
|
|
+ self.handleReaderOverflow)
|
|
|
taskMgr.add(self.readerPollUntilEmpty, "readerPollTask",
|
|
taskMgr.add(self.readerPollUntilEmpty, "readerPollTask",
|
|
|
priority = self.taskPriority)
|
|
priority = self.taskPriority)
|
|
|
|
|
|
|
|
def stopReaderPollTask(self):
|
|
def stopReaderPollTask(self):
|
|
|
taskMgr.remove("readerPollTask")
|
|
taskMgr.remove("readerPollTask")
|
|
|
|
|
+ self.ignore(CConnectionRepository.getOverflowEventName())
|
|
|
|
|
|
|
|
def readerPollUntilEmpty(self, task):
|
|
def readerPollUntilEmpty(self, task):
|
|
|
while self.readerPollOnce():
|
|
while self.readerPollOnce():
|
|
@@ -333,6 +336,11 @@ class ConnectionRepository(DirectObject.DirectObject, CConnectionRepository):
|
|
|
self.lostConnection()
|
|
self.lostConnection()
|
|
|
return 0
|
|
return 0
|
|
|
|
|
|
|
|
|
|
+ def handleReaderOverflow(self):
|
|
|
|
|
+ # this is called if the incoming-datagram queue overflowed and
|
|
|
|
|
+ # we lost some data. Override and handle if desired.
|
|
|
|
|
+ pass
|
|
|
|
|
+
|
|
|
def lostConnection(self):
|
|
def lostConnection(self):
|
|
|
# This should be overrided by a derived class to handle an
|
|
# This should be overrided by a derived class to handle an
|
|
|
# unexpectedly lost connection to the gameserver.
|
|
# unexpectedly lost connection to the gameserver.
|