def routePacket(self, packet):
if packet is None:
self.warning('Cannot route empty packet')
if packet.message == MessageType.SERVER_TRANSMISSION \
and packet.data == "PONG":
self.verbose2("%s" % packet)
else:
self.console("%s" % packet)
if packet.message == MessageType.SERVER_TRANSMISSION:
if packet.channel == ChannelType.SERVER:
if packet.data == "PONG":
return
match = re.search(r"^(?P<event>[A-Z ]+): (?P<data>.*)$", packet.data, re.MULTILINE | re.DOTALL)
if match:
func = 'onServer%s' % (string.capitalize(match.group('event').replace(' ','_')))
data = match.group('data')
#self.debug('DATA: %s' % data)
#self.debug("-==== FUNC!!: " + func)
if hasattr(self, func):
#self.debug('routing ----> %s' % func)
func = getattr(self, func)
event = func(data)
if event:
self.queueEvent(event)
else:
self.warning('TODO: handle: %s(%s)' % (func, data))
else:
self.warning('TODO: handle packet : %s' % packet)
self.queueEvent(self.getEvent('EVT_UNKNOWN', packet))
elif packet.channel == ChannelType.CHATTER:
if packet.data.startswith('BROADCAST:'):
data = packet.data[10:]
func = 'onChatterBroadcast'
if hasattr(self, func):
func = getattr(self, func)
event = func(data)
if event:
self.queueEvent(event)
else:
self.warning('TODO: handle: %s(%s)' % (func, data))
else:
data = packet.data
func = 'onChatter'
if hasattr(self, func):
#self.debug('routing ----> %s' % func)
func = getattr(self, func)
event = func(data)
if event:
self.queueEvent(event)
else:
self.warning('TODO handle: %s(%s)' % (func, data))
else:
self.warning("unhandled channel type : %s" % packet.getChannelTypeAsStr())
else:
self.warning("unhandled message type : %s" % packet.getMessageTypeAsStr())
评论列表
文章目录