| package accord.messages; |
| |
| import accord.local.Node; |
| import accord.local.Node.Id; |
| import accord.messages.Request; |
| import accord.txn.Timestamp; |
| import accord.txn.Dependencies; |
| import accord.txn.Txn; |
| import accord.txn.TxnId; |
| |
| // TODO: CommitOk responses, so we can send again if no reply received? Or leave to recovery? |
| public class Commit extends ReadData implements Request |
| { |
| final Timestamp executeAt; |
| final Dependencies deps; |
| final boolean read; |
| |
| public Commit(TxnId txnId, Txn txn, Timestamp executeAt, Dependencies deps, boolean read) |
| { |
| super(txnId, txn); |
| this.executeAt = executeAt; |
| this.deps = deps; |
| this.read = read; |
| } |
| |
| public void process(Node node, Id from, long messageId) |
| { |
| txn.local(node).forEach(instance -> instance.command(txnId).commit(txn, deps, executeAt)); |
| if (read) super.process(node, from, messageId); |
| } |
| |
| @Override |
| public String toString() |
| { |
| return "Commit{" + |
| "executeAt: " + executeAt + |
| ", deps: " + deps + |
| ", read: " + read + |
| '}'; |
| } |
| } |