mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
92 lines
2.6 KiB
Go
92 lines
2.6 KiB
Go
package v2
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/coreos/etcd/store"
|
|
"github.com/coreos/etcd/third_party/github.com/goraft/raft"
|
|
)
|
|
|
|
func init() {
|
|
store.RegisterCommandFactory(&CommandFactory{})
|
|
}
|
|
|
|
// CommandFactory provides a pluggable way to create version 2 commands.
|
|
type CommandFactory struct {
|
|
}
|
|
|
|
// Version returns the version of this factory.
|
|
func (f *CommandFactory) Version() int {
|
|
return 2
|
|
}
|
|
|
|
// CreateUpgradeCommand is a no-op since version 2 is the first version to support store versioning.
|
|
func (f *CommandFactory) CreateUpgradeCommand() raft.Command {
|
|
return &raft.NOPCommand{}
|
|
}
|
|
|
|
// CreateSetCommand creates a version 2 command to set a key to a given value in the store.
|
|
func (f *CommandFactory) CreateSetCommand(key string, dir bool, value string, expireTime time.Time) raft.Command {
|
|
return &SetCommand{
|
|
Key: key,
|
|
Value: value,
|
|
ExpireTime: expireTime,
|
|
Dir: dir,
|
|
}
|
|
}
|
|
|
|
// CreateCreateCommand creates a version 2 command to create a new key in the store.
|
|
func (f *CommandFactory) CreateCreateCommand(key string, dir bool, value string, expireTime time.Time, unique bool) raft.Command {
|
|
return &CreateCommand{
|
|
Key: key,
|
|
Value: value,
|
|
ExpireTime: expireTime,
|
|
Unique: unique,
|
|
Dir: dir,
|
|
}
|
|
}
|
|
|
|
// CreateUpdateCommand creates a version 2 command to update a key to a given value in the store.
|
|
func (f *CommandFactory) CreateUpdateCommand(key string, value string, expireTime time.Time) raft.Command {
|
|
return &UpdateCommand{
|
|
Key: key,
|
|
Value: value,
|
|
ExpireTime: expireTime,
|
|
}
|
|
}
|
|
|
|
// CreateDeleteCommand creates a version 2 command to delete a key from the store.
|
|
func (f *CommandFactory) CreateDeleteCommand(key string, dir, recursive bool) raft.Command {
|
|
return &DeleteCommand{
|
|
Key: key,
|
|
Recursive: recursive,
|
|
Dir: dir,
|
|
}
|
|
}
|
|
|
|
// CreateCompareAndSwapCommand creates a version 2 command to conditionally set a key in the store.
|
|
func (f *CommandFactory) CreateCompareAndSwapCommand(key string, value string, prevValue string, prevIndex uint64, expireTime time.Time) raft.Command {
|
|
return &CompareAndSwapCommand{
|
|
Key: key,
|
|
Value: value,
|
|
PrevValue: prevValue,
|
|
PrevIndex: prevIndex,
|
|
ExpireTime: expireTime,
|
|
}
|
|
}
|
|
|
|
// CreateCompareAndDeleteCommand creates a version 2 command to conditionally delete a key from the store.
|
|
func (f *CommandFactory) CreateCompareAndDeleteCommand(key string, prevValue string, prevIndex uint64) raft.Command {
|
|
return &CompareAndDeleteCommand{
|
|
Key: key,
|
|
PrevValue: prevValue,
|
|
PrevIndex: prevIndex,
|
|
}
|
|
}
|
|
|
|
func (f *CommandFactory) CreateSyncCommand(now time.Time) raft.Command {
|
|
return &SyncCommand{
|
|
Time: time.Now(),
|
|
}
|
|
}
|