@Override
  public void toData(DataOutput out, SerializationContext context) throws IOException {
    out.writeInt(processorId);
    InternalDataSerializer.invokeToData(txIdent, out);
    {
      boolean hasLockId = lockId != null;
      out.writeBoolean(hasLockId);
      if (hasLockId) {
        InternalDataSerializer.invokeToData(lockId, out);
      }
    }
    int regionsSize = 0;
    {
      int totalMaxSize = 0;
      if (regions != null) {
        regionsSize = regions.size();
        for (RegionCommit region : regions) {
          totalMaxSize += region.maxSize;
        }
      }
      out.writeInt(totalMaxSize);
    }

    if (txState != null) {
      DataSerializer.writeByteArray(txState.getBaseMembershipId(), out);
      out.writeLong(txState.getBaseThreadId());
      out.writeLong(txState.getBaseSequenceId());
    } else {
      DataSerializer.writeByteArray(farsideBaseMembershipId, out);
      out.writeLong(farsideBaseThreadId);
      out.writeLong(farsideBaseSequenceId);
    }

    if (txState != null) {
      DataSerializer.writeBoolean(txState.needsLargeModCount(), out);
    } else {
      DataSerializer.writeBoolean(needsLargeModCount, out);
    }

    final boolean useShadowKey = useShadowKey();
    if (hasFlagsField(out)) {
      out.writeBoolean(useShadowKey);
    }

    out.writeInt(regionsSize);
    {
      if (regionsSize > 0) {
        for (RegionCommit region : regions) {
          region.toData(out, context, useShadowKey);
        }
      }
    }

    DataSerializer.writeObject(bridgeContext, out);

    DataSerializer.writeHashSet(farSiders, out);
  }
Indicate whether an ack is required. Defaults to true.

@param a true if we require an ack. false if not. false on clients.
geode-core/src/main/java/org/apache/geode/internal/cache/TXCommitMessage.java