コード例 #1
0
    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
コード例 #2
0
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
コード例 #3
0
    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
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
0
def test_delivery_tag():
    message = c_uamqp.create_message()
    assert not message.delivery_tag