def __init__(self, body=None, properties=None, application_properties=None, annotations=None, header=None, msg_format=None, message=None, settler=None, delivery_no=None, encoding='UTF-8'): self.state = constants.MessageState.WaitingToBeSent self.idle_time = 0 self.retries = 0 self._response = None self._settler = None self._encoding = encoding self._delivery_no = delivery_no self.on_send_complete = None self.properties = None self.application_properties = None self.annotations = None self.header = None self.footer = None self.delivery_annotations = None if message: if settler: self.state = constants.MessageState.ReceivedUnsettled self._response = None else: self.state = constants.MessageState.ReceivedSettled self._response = errors.MessageAlreadySettled() self._settler = settler self._parse_message(message) else: self._message = c_uamqp.create_message() if isinstance(body, (bytes, str)): self._body = DataBody(self._message) self._body.append(body) elif isinstance(body, list) and all( [isinstance(b, (bytes, str)) for b in body]): self._body = DataBody(self._message) for value in body: self._body.append(value) elif isinstance(body, list): self._body = SequenceBody(self._message) for value in body: self._body.append(value) else: self._body = ValueBody(self._message) self._body.set(body) if msg_format: self._message.message_format = msg_format self.properties = properties self.application_properties = application_properties self.annotations = annotations self.header = header
def test_body_value(): message = c_uamqp.create_message() body_value = c_uamqp.string_value(b'TestBodyValue') message.set_body_value(body_value) assert message.body_type == c_uamqp.MessageBodyType.ValueType body = message.get_body_value() assert body.type == c_uamqp.AMQPType.StringValue
def __init__(self, body=None, properties=None, application_properties=None, annotations=None, header=None, msg_format=None, message=None, settler=None, delivery_no=None, encoding='UTF-8', body_type=None, footer=None, delivery_annotations=None): self.state = constants.MessageState.WaitingToBeSent self.idle_time = 0 self.retries = 0 self._response = None self._settler = None self._encoding = encoding self.delivery_no = delivery_no self.delivery_tag = None self.on_send_complete = None self._properties = None self._application_properties = None self._annotations = None self._header = None self._footer = None self._delivery_annotations = None self._need_further_parse = False if message: if settler: self.state = constants.MessageState.ReceivedUnsettled self._response = None else: self.state = constants.MessageState.ReceivedSettled self._response = errors.MessageAlreadySettled() self._settler = settler self._parse_message_body(message) else: self._message = c_uamqp.create_message() # if body_type is not given, we detect the body type by checking the type of the object if not body_type: self._auto_set_body(body) else: self._set_body_by_body_type(body, body_type) if msg_format: self._message.message_format = msg_format self._properties = properties self._application_properties = application_properties self._annotations = annotations self._delivery_annotations = delivery_annotations self._header = header self._footer = footer
def test_body_sequence(): message = c_uamqp.create_message() message.add_body_sequence(c_uamqp.int_value(1)) message.add_body_sequence(c_uamqp.int_value(2)) message.add_body_sequence(c_uamqp.int_value(3)) assert message.count_body_sequence() == 3 assert message.body_type == c_uamqp.MessageBodyType.SequenceType seq_value = message.get_body_sequence(2) assert seq_value.type == c_uamqp.AMQPType.IntValue assert seq_value.value == 3
def test_message(): value = c_uamqp.create_message() new_value = value.clone() assert new_value is not value #assert isinstance(value.header, c_uamqp.cHeader) #assert isinstance(value.properties, c_uamqp.Properties) #assert isinstance(value.application_properties, c_uamqp.AMQPValue) #assert isinstance(value.message_annotations, c_uamqp.MessageAnnotations) #assert isinstance(value.delivery_annotations, c_uamqp.DeliveryAnnotations) #assert isinstance(value.footer, c_uamqp.Annotations) assert value.message_format == 0 assert value.body_type == c_uamqp.MessageBodyType.NoneType
def test_delivery_tag(): message = c_uamqp.create_message() assert not message.delivery_tag