Ejemplo n.º 1
0
	def processReceivedMessageData(self, msgData):
		log.log("Received data: %s\n" % msgData)

		try:
			container = serializable.deserialize(msgData)
			if 'received' in container.keys():
				#Process received confirmation:
				index = container['received']
				self.network.callback.handleMessage(
					messages.Confirmation(localID=self.localID, index=index)
					)
			elif 'message' in container.keys():
				index = container['index']
				msg = container['message']
				#print "Got message: ", str(msg.__class__)

				if isinstance(msg, messages.Connect):
					if not (self.localID is None):
						raise Exception("Received connect message while already connected")
					self.localID = msg.ID
					self.dice = msg.dice
					self.network.checkForDuplicateConnections(self.localID)
				else:
					#Send confirmation on non-connect messages:
					confirmation = {'received': index}
					self.send(serializable.serialize(confirmation) + '\n')

				#TODO: filter for acceptable message types, IDs etc. before
				#sending them to a general-purpose message handler
				self.network.callback.handleMessage(msg)
			else:
				log.log("Received message with invalid format")
		except Exception as e:
			log.logException()
Ejemplo n.º 2
0
        def handler(self, *args, **kwargs):
            args, kwargs = self.rewrite_args(args, kwargs)

            retval = fn(self, *args, **kwargs)
            uid = self.get_persistent_uid(retval)

            def attachment_replacer(key, value):
                if type(value) is numpy.ndarray:
                    return {
                        '$type': 'ArrayBuffer',
                        'dataType': str(value.dtype),
                        'buffer': self.addAttachment(value.tobytes()),
                    }
                return value

            return {'uid': uid, 'data': serialize(retval, attachment_replacer)}
Ejemplo n.º 3
0
	def sendMessage(self, index, msg):
		log.log("Sending message %s" % str(msg.__class__))
		container = {'index': index, 'message': msg}
		self.send(serializable.serialize(container) + '\n')