class MessageProxy(protocol.Protocol, BaseDispatch, object): peer = None peer_type = None # device or server def __init__(self): self._parser = APSParser() self._source = None self._buffer = b'' def setPeer(self, peer): self.peer = peer def dataReceived(self, data): buff = self._buffer + data while self._parser.isMessageComplete(buff): message, length = self._parser.parseMessage(buff) messageData = buff[:length] buff = buff[length:] self.handleMessage(message, messageData) self._buffer = buff def handleMessage(self, message, data): forward = self.dispatch(self.peer_type, message) if forward: self.sendToPeer(data) def sendToPeer(self, data): self.peer.transport.write(data) # FIXME implement in own handler # log.msg(repr(message)) # FIXME implement in own handler # if hasattr(message, 'pushToken'): # self.updatePushToken(caller, message.pushToken) def connectionLost(self, reason): # TODO notify handlers # FIXME fix this shutdown if self.peer is not None: self.peer.transport.loseConnection() self.peer = None else: log.msg("Unable to connect to peer: %s" % (reason, ))
class MessageProxy(protocol.Protocol, BaseDispatch, object): peer = None peer_type = None # device or server def __init__(self): self._parser = APSParser() self._source = None self._buffer = b'' def setPeer(self, peer): self.peer = peer def dataReceived(self, data): buff = self._buffer + data while self._parser.isMessageComplete(buff): message, length = self._parser.parseMessage(buff) messageData = buff[:length] buff = buff[length:] self.handleMessage(message, messageData) self._buffer = buff def handleMessage(self, message, data): forward = self.dispatch(self.peer_type, message) if forward: self.sendToPeer(data) def sendToPeer(self, data): self.peer.transport.write(data) # FIXME implement in own handler # log.msg(repr(message)) # FIXME implement in own handler # if hasattr(message, 'pushToken'): # self.updatePushToken(caller, message.pushToken) def connectionLost(self, reason): # TODO notify handlers # FIXME fix this shutdown if self.peer is not None: self.peer.transport.loseConnection() self.peer = None else: log.msg("Unable to connect to peer: %s" % (reason,))