package com.jivesoftware.os.amza.service; import com.jivesoftware.os.amza.api.stream.Commitable; import com.jivesoftware.os.amza.api.stream.UnprefixedTxKeyValueStream; import com.jivesoftware.os.amza.api.take.Highwaters; import com.jivesoftware.os.jive.utils.ordered.id.OrderIdProvider; /** * */ public class AmzaPartitionCommitable implements Commitable { private final AmzaPartitionUpdates updates; private final OrderIdProvider orderIdProvider; public AmzaPartitionCommitable(AmzaPartitionUpdates updates, OrderIdProvider orderIdProvider) { this.updates = updates; this.orderIdProvider = orderIdProvider; } @Override public boolean commitable(Highwaters highwaters, UnprefixedTxKeyValueStream txKeyValueStream) throws Exception { long version = orderIdProvider.nextId(); return updates.updates((key, value, valueTimestamp, valueTombstoned) -> { return txKeyValueStream.row(-1L, key, value, valueTimestamp, valueTombstoned, version); }); } }