-public class ShardTransaction extends UntypedActor {
-
- private final DOMStoreReadWriteTransaction transaction;
-
- private final LoggingAdapter log = Logging.getLogger(getContext().system(), this);
-
- public ShardTransaction(DOMStoreReadWriteTransaction transaction) {
- this.transaction = transaction;
- }
-
-
- public static Props props(final DOMStoreReadWriteTransaction transaction){
- return Props.create(new Creator<ShardTransaction>(){
-
- @Override
- public ShardTransaction create() throws Exception {
- return new ShardTransaction(transaction);
- }
- });
- }
-
- @Override
- public void onReceive(Object message) throws Exception {
- if(message instanceof ReadData){
- readData((ReadData) message);
- } else if(message instanceof WriteData){
- writeData((WriteData) message);
- } else if(message instanceof MergeData){
- mergeData((MergeData) message);
- } else if(message instanceof DeleteData){
- deleteData((DeleteData) message);
- } else if(message instanceof ReadyTransaction){
- readyTransaction((ReadyTransaction) message);
- } else if(message instanceof CloseTransaction){
- closeTransaction((CloseTransaction) message);
+public abstract class ShardTransaction extends AbstractUntypedActorWithMetering {
+
+ protected static final boolean SERIALIZED_REPLY = true;
+
+ private final ActorRef shardActor;
+ private final SchemaContext schemaContext;
+ private final ShardStats shardStats;
+ private final String transactionID;
+ private final short clientTxVersion;
+
+ protected ShardTransaction(ActorRef shardActor, SchemaContext schemaContext,
+ ShardStats shardStats, String transactionID, short clientTxVersion) {
+ super("shard-tx"); //actor name override used for metering. This does not change the "real" actor name
+ this.shardActor = shardActor;
+ this.schemaContext = schemaContext;
+ this.shardStats = shardStats;
+ this.transactionID = transactionID;
+ this.clientTxVersion = clientTxVersion;