Esempio n. 1
0
    def __init__(self, topic=None, serialized_data=None):
        # topic get stored as a basestring in case of xMsgTopic object str()
        # will convert it
        self._topic = str(topic)

        if(isinstance(serialized_data, basestring) or
           isinstance(serialized_data, bytearray) or
           isinstance(serialized_data, bytes) or
           isinstance(serialized_data, basestring)):
            self._data = serialized_data
            self._metadata = xMsgMeta()

        elif not serialized_data:
            self._metadata = xMsgMeta()
Esempio n. 2
0
class BaseRequest(object):
    __metaclass__ = ABCMeta
    __meta = xMsgMeta()
    __base = xMsgConstants.UNDEFINED
    __topic = xMsgConstants.UNDEFINED
    __frontend = xMsgConstants.UNDEFINED

    def __init__(self, base, frontend, topic):
        self.__frontend = frontend
        self.__topic = topic
        self.__base = base

    @abstractmethod
    def msg(self):
        pass

    @abstractmethod
    def parse_data(self, msg):
        pass

    def run(self):
        try:
            self.__base.send(self.__frontend, self.msg())
        except Exception as e:
            raise ClaraException("cannot send message: %s" % e)

    def sync_run(self, timeout_in_ms):
        try:
            response = self.__base.sync_send(self.__frontend, timeout_in_ms)
            return self.parse_data(response)
        except Exception as e:
            raise ClaraException("cannot send message: %s" % e)
    def execute_composition(self, composition, input_data):
        """Sends request to Service to execute with given data

        Args:
            composition (String): service composition for execution
            input_data (EngineData): input data parameter for service execution
        """
        topic = ClaraUtils.build_topic(CConstants.SERVICE,
                                       composition.first_service())
        meta = xMsgMeta()
        meta.MergeFrom(input_data.metadata)
        meta.action = xMsgMeta.EXECUTE
        meta.composition = str(composition)
        input_data.metadata = meta

        message = self.base.serialize(topic, input_data, self.datatypes)
        self.base.send(message)
Esempio n. 4
0
    def from_serialized_data(cls, serialized_data):
        """Constructs a message with serialized data and the default metadata

        Args:
            serialized_data (bytes): serialized data object

        Returns:
            xMsgMessage: xMsg message object
        """
        msg = xMsgMessage()

        try:
            msg.topic = serialized_data[0]
            metadata = xMsgMeta()
            metadata.ParseFromString(serialized_data[1])
            msg.metadata = metadata
            msg.data = serialized_data[2]
            return msg

        except IndexError as index_error:
            raise Exception("xMsgMessage : %s" % index_error)
Esempio n. 5
0
 def __init__(self):
     super(EngineData, self).__init__()
     self._metadata = xMsgMeta()
 def test_get_metadata_set_by_set_function(self):
     data = xMsgMeta()
     self.message.metadata = data
     test_case = self.message.metadata
     self.assertIsInstance(test_case, xMsgMeta)
 def test_set_metadata(self):
     metadata = xMsgMeta()
     self.message.metadata = metadata
     self.assertIsInstance(self.message.metadata, xMsgMeta)
 def test_serialize(self):
     self.message.metadata = xMsgMeta()
     for data in self.message.serialize():
         self.assertIsInstance(data, basestring)