@Override
  public void fromData(DataInput in, DeserializationContext context)
      throws IOException, ClassNotFoundException {
    int pId = in.readInt();

    if (isAckRequired()) {
      processorId = pId;
      ReplyProcessor21.setMessageRPId(processorId);
    } else {
      processorId = -1;
    }

    txIdent = TXId.createFromData(in);
    if (in.readBoolean()) {
      lockId = TXLockIdImpl.createFromData(in);
    }
    int totalMaxSize = in.readInt();

    farsideBaseMembershipId = DataSerializer.readByteArray(in);
    farsideBaseThreadId = in.readLong();
    farsideBaseSequenceId = in.readLong();

    needsLargeModCount = in.readBoolean();

    final boolean hasShadowKeys = hasFlagsField(in) ? in.readBoolean() : useShadowKey();

    int regionsSize = in.readInt();
    regions = new ArrayList<>(regionsSize);
    farSideEntryOps = new ArrayList<>(totalMaxSize);
    for (int i = 0; i < regionsSize; i++) {
      RegionCommit rc = new RegionCommit(this);
      try {
        rc.fromData(in, hasShadowKeys);
      } catch (CacheClosedException cce) {
        addProcessingException(cce);
        // return to avoid serialization error being sent in reply
        return;
      }
      regions.add(rc);
    }

    bridgeContext = ClientProxyMembershipID.readCanonicalized(in);
    farSiders = DataSerializer.readHashSet(in);
  }
Adds an entry op for this tx to do on the far side
geode-core/src/main/java/org/apache/geode/internal/cache/TXCommitMessage.java