+ closedTransactions.put(UnsignedLong.fromLongBits(txId.getTransactionId()), Boolean.TRUE);
+ }
+
+ void onTransactionPurged(final TransactionIdentifier txId) {
+ final UnsignedLong id = UnsignedLong.fromLongBits(txId.getTransactionId());
+ closedTransactions.remove(id);
+ purgedTransactions.add(Range.closedOpen(id, UnsignedLong.ONE.plus(id)));
+ }
+
+ /**
+ * Transform frontend metadata for a particular client history into its {@link LocalFrontendHistory} counterpart.
+ *
+ * @param shard parent shard
+ * @return Leader history state
+ */
+ @Nonnull AbstractFrontendHistory toLeaderState(@Nonnull final Shard shard) {
+ if (identifier.getHistoryId() == 0) {
+ return StandaloneFrontendHistory.recreate(shard.persistenceId(), identifier.getClientId(),
+ shard.getDataStore(), closedTransactions, purgedTransactions);
+ }
+
+ return LocalFrontendHistory.recreate(shard.persistenceId(), shard.getDataStore(),
+ shard.getDataStore().recreateTransactionChain(identifier, closed), closedTransactions, purgedTransactions);