github.com/sym3tri/etcd@v0.2.1-0.20140422215517-a563d82f95d6/store/v2/command_factory.go (about) 1 package v2 2 3 import ( 4 "time" 5 6 "github.com/coreos/etcd/store" 7 "github.com/coreos/etcd/third_party/github.com/goraft/raft" 8 ) 9 10 func init() { 11 store.RegisterCommandFactory(&CommandFactory{}) 12 } 13 14 // CommandFactory provides a pluggable way to create version 2 commands. 15 type CommandFactory struct { 16 } 17 18 // Version returns the version of this factory. 19 func (f *CommandFactory) Version() int { 20 return 2 21 } 22 23 // CreateUpgradeCommand is a no-op since version 2 is the first version to support store versioning. 24 func (f *CommandFactory) CreateUpgradeCommand() raft.Command { 25 return &raft.NOPCommand{} 26 } 27 28 // CreateSetCommand creates a version 2 command to set a key to a given value in the store. 29 func (f *CommandFactory) CreateSetCommand(key string, dir bool, value string, expireTime time.Time) raft.Command { 30 return &SetCommand{ 31 Key: key, 32 Value: value, 33 ExpireTime: expireTime, 34 Dir: dir, 35 } 36 } 37 38 // CreateCreateCommand creates a version 2 command to create a new key in the store. 39 func (f *CommandFactory) CreateCreateCommand(key string, dir bool, value string, expireTime time.Time, unique bool) raft.Command { 40 return &CreateCommand{ 41 Key: key, 42 Value: value, 43 ExpireTime: expireTime, 44 Unique: unique, 45 Dir: dir, 46 } 47 } 48 49 // CreateUpdateCommand creates a version 2 command to update a key to a given value in the store. 50 func (f *CommandFactory) CreateUpdateCommand(key string, value string, expireTime time.Time) raft.Command { 51 return &UpdateCommand{ 52 Key: key, 53 Value: value, 54 ExpireTime: expireTime, 55 } 56 } 57 58 // CreateDeleteCommand creates a version 2 command to delete a key from the store. 59 func (f *CommandFactory) CreateDeleteCommand(key string, dir, recursive bool) raft.Command { 60 return &DeleteCommand{ 61 Key: key, 62 Recursive: recursive, 63 Dir: dir, 64 } 65 } 66 67 // CreateCompareAndSwapCommand creates a version 2 command to conditionally set a key in the store. 68 func (f *CommandFactory) CreateCompareAndSwapCommand(key string, value string, prevValue string, prevIndex uint64, expireTime time.Time) raft.Command { 69 return &CompareAndSwapCommand{ 70 Key: key, 71 Value: value, 72 PrevValue: prevValue, 73 PrevIndex: prevIndex, 74 ExpireTime: expireTime, 75 } 76 } 77 78 // CreateCompareAndDeleteCommand creates a version 2 command to conditionally delete a key from the store. 79 func (f *CommandFactory) CreateCompareAndDeleteCommand(key string, prevValue string, prevIndex uint64) raft.Command { 80 return &CompareAndDeleteCommand{ 81 Key: key, 82 PrevValue: prevValue, 83 PrevIndex: prevIndex, 84 } 85 } 86 87 func (f *CommandFactory) CreateSyncCommand(now time.Time) raft.Command { 88 return &SyncCommand{ 89 Time: time.Now(), 90 } 91 }