verbose disconnect reasons

This commit is contained in:
David Rose 2002-11-07 21:30:51 +00:00
parent b4ed038469
commit 350369ae57
2 changed files with 43 additions and 17 deletions

View File

@ -41,6 +41,9 @@ class ClientRepository(DirectObject.DirectObject):
# is weak. # is weak.
self.connectHttp = base.config.GetBool('connect-http', 1) self.connectHttp = base.config.GetBool('connect-http', 1)
self.bootedIndex = None
self.bootedText = None
self.tcpConn = None self.tcpConn = None
return None return None
@ -75,7 +78,8 @@ class ClientRepository(DirectObject.DirectObject):
the return status code giving reason for failure, if it is the return status code giving reason for failure, if it is
known. known.
""" """
self.bootedIndex = None
self.bootedText = None
if self.connectHttp: if self.connectHttp:
ch = self.http.makeChannel(0) ch = self.http.makeChannel(0)
ch.beginConnectTo(serverURL) ch.beginConnectTo(serverURL)
@ -488,24 +492,43 @@ class ClientRepository(DirectObject.DirectObject):
"Asked to update non-existent DistObj " + str(doId)) "Asked to update non-existent DistObj " + str(doId))
return None return None
def handleGoGetLost(self, di):
# The server told us it's about to drop the connection on us.
# Get ready!
if (di.getRemainingSize() > 0):
self.bootedIndex = di.getUint16()
self.bootedText = di.getString()
ClientRepository.notify.warning(
"Server is booting us out (%d): %s" % (self.bootedIndex, self.bootedText))
else:
self.bootedIndex = None
self.bootedText = None
ClientRepository.notify.warning(
"Server is booting us out with no explanation.")
def handleUnexpectedMsgType(self, msgType, di): def handleUnexpectedMsgType(self, msgType, di):
currentLoginState = self.loginFSM.getCurrentState() if msgType == CLIENT_GO_GET_LOST:
if currentLoginState: self.handleGoGetLost(di)
currentLoginStateName = currentLoginState.getName()
else: else:
currentLoginStateName = "None" currentLoginState = self.loginFSM.getCurrentState()
currentGameState = self.gameFSM.getCurrentState() if currentLoginState:
if currentGameState: currentLoginStateName = currentLoginState.getName()
currentGameStateName = currentGameState.getName() else:
else: currentLoginStateName = "None"
currentGameStateName = "None" currentGameState = self.gameFSM.getCurrentState()
ClientRepository.notify.warning( if currentGameState:
"Ignoring unexpected message type: " + currentGameStateName = currentGameState.getName()
str(msgType) + else:
" login state: " + currentGameStateName = "None"
currentLoginStateName + ClientRepository.notify.warning(
" game state: " + "Ignoring unexpected message type: " +
currentGameStateName) str(msgType) +
" login state: " +
currentLoginStateName +
" game state: " +
currentGameStateName)
return None return None
def sendSetShardMsg(self, shardId): def sendSetShardMsg(self, shardId):

View File

@ -1,5 +1,8 @@
"""MsgTypes module: contains distributed object message types""" """MsgTypes module: contains distributed object message types"""
# Sent by the server when it is dropping the connection deliberately.
CLIENT_GO_GET_LOST = 4
CLIENT_OBJECT_UPDATE_FIELD = 24 CLIENT_OBJECT_UPDATE_FIELD = 24
CLIENT_OBJECT_UPDATE_FIELD_RESP = 24 CLIENT_OBJECT_UPDATE_FIELD_RESP = 24
CLIENT_OBJECT_DISABLE_RESP = 25 CLIENT_OBJECT_DISABLE_RESP = 25