2.2.20.5 TransactionHeader

The TransactionHeader packet contains sequence information for a transactional message. The presence of this packet in a UserMessage Packet indicates that the message contained in the packet is transactional.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Flags

TxSequenceID

...

TxSequenceNumber

PreviousTxSequenceNumber

ConnectorQMGuid (16 bytes, optional)

...

...

Flags (4 bytes): A 32-bit unsigned integer that contains a set of options that provide additional information about the packet. Any combination of these values is acceptable unless otherwise noted in the following table.

Any value not specified in the table MUST be treated as an error by closing the session.

The value SHOULD be set to a combination of the following values.<18>


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

A

B

C

D

ID

E

F

G

H

I

J

K

L

A - CG (1 bit): A bit that specifies whether the ConnectorQMGuid field contains a connector queue manager GUID. If set, the ConnectorQMGuid field MUST contain a GUID.

B - FA (1 bit): A bit that specifies whether a FinalAck Packet, as defined in [MS-MQQB] section 2.2.5, is required. For more details see [MS-MQQB] section 3.1.7.2.2.

C - FM (1 bit): A bit that specifies whether the message is the first one sent within the context of a transaction. This bit MUST be set if the message is the first one in a transaction, otherwise it MUST be clear.

D - LM (1 bit): A bit that specifies whether the message is the last one sent within the context of a transaction. This bit MUST be set if the message is the last one in a transaction, otherwise it MUST be clear.

ID (20 bits): An array of 20 bits that specifies an identifier to correlate this packet to the transaction under which it was captured. The message transfer protocols MUST generate an identifier for the transaction and assign all packets captured under the transaction to the value. This identifier MUST be unique across all such identifiers generated by the sender queue manager.

E - X1 (1 bit): An unused bit field. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

F - X2 (1 bit): An unused bit field. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

G - X3 (1 bit): An unused bit field. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

H - X4 (1 bit): An unused bit field. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

I - X5 (1 bit): An unused bit field. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

J - X6 (1 bit): An unused bit field. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

K - X7 (1 bit): An unused bit field. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

L - X8 (1 bit): An unused bit field. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

TxSequenceID (8 bytes): A transactional sequence identifier, as specified in TxSequenceID. This value identifies the transactional sequence that the TxSequenceNumber and PreviousTxSequenceNumber are within. For more details, see section 2.2.18.1.2.

TxSequenceNumber (4 bytes): A 32-bit unsigned integer that is the message sequence number within the TxSequenceID sequence. This field MUST be set to the value that represents the message position within the transactional sequence. The first message within a sequence MUST be set to the value 1. This field has a valid range from 0x00000001 to 0xFFFFFFFF.

PreviousTxSequenceNumber (4 bytes): A 32-bit unsigned integer that is the sequence number of the previous message in the TxSequenceID sequence. This field MUST be set to the sequence number of the message that precedes this message in the transactional sequence. This value MUST be set to 0x00000000 if there is no previous message. This field has a valid range from 0x00000000 to 0xFFFFFFFE.

ConnectorQMGuid (16 bytes): An optional field containing an application-defined GUID, as specified in [MS-DTYP] section 2.3.4. If Flags.CG is set, this field MUST be present; otherwise, it MUST NOT. This field can be used by higher-layer messaging applications. The server MUST NOT process or interpret this field.