private EntryEventImpl createEvent(InternalCache cache, InternalRegion region,
        Region.Entry<?, ?> entry, long newestTimestampAllowed) {
      if (entry instanceof DestroyedEntry) {
        return null;
      }
      EntryEventImpl event;
      try {
        if (mustDiscardEntry(entry, newestTimestampAllowed, region)) {
          return null;
        }
        event = new DefaultEntryEventFactory().create(region, Operation.UPDATE,
            entry.getKey(),
            entry.getValue(), null, false,
            cache.getInternalDistributedSystem().getDistributedMember(), false);
      } catch (EntryDestroyedException e) {
        return null;
      }
      if (region.getAttributes().getConcurrencyChecksEnabled()) {
        if (entry instanceof NonTXEntry) {
          event.setVersionTag(
              ((NonTXEntry) entry).getRegionEntry().getVersionStamp().asVersionTag());
        } else {
          event.setVersionTag(((EntrySnapshot) entry).getVersionTag());
        }
      }
      event.setNewEventId(cache.getInternalDistributedSystem());
      return event;
    }
It runs the actions to be done after a batch has been
sent: throw an interrupted exception if the operation was canceled and
adjust the rate of copying by sleeping if necessary.

@param startTime time at which the entries started to be copied
@param copiedEntries number of entries copied so far
@param maxRate maximum copying rate
geode-wan/src/main/java/org/apache/geode/management/internal/cli/functions/WanCopyRegionFunctionDelegate.java