


# encodeMessageHeader method








void encodeMessageHeader
(int ordinal, int txid, [CallStrictness](../../package-fidl_fidl/CallStrictness.md) strictness)








## Implementation

```dart
void encodeMessageHeader(int ordinal, int txid, CallStrictness strictness) {
  alloc(kMessageHeaderSize, 0);
  encodeUint32(txid, kMessageTxidOffset);
  encodeUint8(kWireFormatV2FlagMask, kMessageFlagOffset);
  encodeUint8(0, kMessageFlagOffset + 1);
  encodeUint8(strictnessToFlags(strictness), kMessageDyanmicFlagOffset);
  encodeUint8(kMagicNumberInitial, kMessageMagicOffset);
  encodeUint64(ordinal, kMessageOrdinalOffset);
}
```







