| package state |
| |
| import ( |
| "github.com/docker/swarmkit/api" |
| "golang.org/x/net/context" |
| ) |
| |
| // A Change includes a version number and a set of store actions from a |
| // particular log entry. |
| type Change struct { |
| StoreActions []api.StoreAction |
| Version api.Version |
| } |
| |
| // A Proposer can propose actions to a cluster. |
| type Proposer interface { |
| // ProposeValue adds storeAction to the distributed log. If this |
| // completes successfully, ProposeValue calls cb to commit the |
| // proposed changes. The callback is necessary for the Proposer to make |
| // sure that the changes are committed before it interacts further |
| // with the store. |
| ProposeValue(ctx context.Context, storeAction []api.StoreAction, cb func()) error |
| // GetVersion returns the monotonic index of the most recent item in |
| // the distributed log. |
| GetVersion() *api.Version |
| // ChangesBetween returns the changes starting after "from", up to and |
| // including "to". If these changes are not available because the log |
| // has been compacted, an error will be returned. |
| ChangesBetween(from, to api.Version) ([]Change, error) |
| } |