Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
      View Source
      
  
    const ( Get = "get" Create = "create" Set = "set" Update = "update" Delete = "delete" CompareAndSwap = "compareAndSwap" CompareAndDelete = "compareAndDelete" Expire = "expire" )
      View Source
      
  
const ( SetSuccess = iota SetFail DeleteSuccess DeleteFail CreateSuccess CreateFail UpdateSuccess UpdateFail CompareAndSwapSuccess CompareAndSwapFail GetSuccess GetFail ExpireCount CompareAndDeleteSuccess CompareAndDeleteFail )
Variables ¶
      View Source
      
  
var Permanent time.Time
    Functions ¶
func RegisterCommandFactory ¶
func RegisterCommandFactory(factory CommandFactory)
RegisterCommandFactory adds a command factory to the global registry.
Types ¶
type CommandFactory ¶
type CommandFactory interface {
	Version() int
	CreateUpgradeCommand() raft.Command
	CreateSetCommand(key string, dir bool, value string, expireTime time.Time) raft.Command
	CreateCreateCommand(key string, dir bool, value string, expireTime time.Time, unique bool) raft.Command
	CreateUpdateCommand(key string, value string, expireTime time.Time) raft.Command
	CreateDeleteCommand(key string, dir, recursive bool) raft.Command
	CreateCompareAndSwapCommand(key string, value string, prevValue string,
		prevIndex uint64, expireTime time.Time) raft.Command
	CreateCompareAndDeleteCommand(key string, prevValue string, prevIndex uint64) raft.Command
	CreateSyncCommand(now time.Time) raft.Command
}
    The CommandFactory provides a way to create different types of commands depending on the current version of the store.
func GetCommandFactory ¶
func GetCommandFactory(version int) CommandFactory
GetCommandFactory retrieves a command factory for a given command version.
type Event ¶
type Event struct {
	Action   string      `json:"action"`
	Node     *NodeExtern `json:"node,omitempty"`
	PrevNode *NodeExtern `json:"prevNode,omitempty"`
}
    type EventHistory ¶
type NodeExtern ¶
type NodeExtern struct {
	Key           string      `json:"key, omitempty"`
	Value         string      `json:"value,omitempty"`
	Dir           bool        `json:"dir,omitempty"`
	Expiration    *time.Time  `json:"expiration,omitempty"`
	TTL           int64       `json:"ttl,omitempty"`
	Nodes         NodeExterns `json:"nodes,omitempty"`
	ModifiedIndex uint64      `json:"modifiedIndex,omitempty"`
	CreatedIndex  uint64      `json:"createdIndex,omitempty"`
}
    NodeExtern is the external representation of the internal node with additional fields PrevValue is the previous value of the node TTL is time to live in second
type NodeExterns ¶
type NodeExterns []*NodeExtern
func (NodeExterns) Less ¶
func (ns NodeExterns) Less(i, j int) bool
func (NodeExterns) Swap ¶
func (ns NodeExterns) Swap(i, j int)
type Response ¶
type Response struct {
	Action    string `json:"action"`
	Key       string `json:"key"`
	Dir       bool   `json:"dir,omitempty"`
	PrevValue string `json:"prevValue,omitempty"`
	Value     string `json:"value,omitempty"`
	// If the key did not exist before the action,
	// this field should be set to true
	NewKey bool `json:"newKey,omitempty"`
	Expiration *time.Time `json:"expiration,omitempty"`
	// Time to live in second
	TTL int64 `json:"ttl,omitempty"`
	// The command index of the raft machine when the command is executed
	Index uint64 `json:"index"`
}
    The response from the store to the user who issue a command
type Stats ¶
type Stats struct {
	// Number of get requests
	GetSuccess uint64 `json:"getsSuccess"`
	GetFail    uint64 `json:"getsFail"`
	// Number of sets requests
	SetSuccess uint64 `json:"setsSuccess"`
	SetFail    uint64 `json:"setsFail"`
	// Number of delete requests
	DeleteSuccess uint64 `json:"deleteSuccess"`
	DeleteFail    uint64 `json:"deleteFail"`
	// Number of update requests
	UpdateSuccess uint64 `json:"updateSuccess"`
	UpdateFail    uint64 `json:"updateFail"`
	// Number of create requests
	CreateSuccess uint64 `json:"createSuccess"`
	CreateFail    uint64 `json:"createFail"`
	// Number of testAndSet requests
	CompareAndSwapSuccess uint64 `json:"compareAndSwapSuccess"`
	CompareAndSwapFail    uint64 `json:"compareAndSwapFail"`
	// Number of compareAndDelete requests
	CompareAndDeleteSuccess uint64 `json:"compareAndDeleteSuccess"`
	CompareAndDeleteFail    uint64 `json:"compareAndDeleteFail"`
	ExpireCount uint64 `json:"expireCount"`
	Watchers uint64 `json:"watchers"`
}
    func (*Stats) TotalReads ¶
func (*Stats) TotalTranscations ¶
type Store ¶
type Store interface {
	Version() int
	CommandFactory() CommandFactory
	Index() uint64
	Get(nodePath string, recursive, sorted bool) (*Event, error)
	Set(nodePath string, dir bool, value string, expireTime time.Time) (*Event, error)
	Update(nodePath string, newValue string, expireTime time.Time) (*Event, error)
	Create(nodePath string, dir bool, value string, unique bool,
		expireTime time.Time) (*Event, error)
	CompareAndSwap(nodePath string, prevValue string, prevIndex uint64,
		value string, expireTime time.Time) (*Event, error)
	Delete(nodePath string, recursive, dir bool) (*Event, error)
	CompareAndDelete(nodePath string, prevValue string, prevIndex uint64) (*Event, error)
	Watch(prefix string, recursive, stream bool, sinceIndex uint64) (*Watcher, error)
	Save() ([]byte, error)
	Recovery(state []byte) error
	TotalTransactions() uint64
	JsonStats() []byte
	DeleteExpiredKeys(cutoff time.Time)
}
    
      
      Source Files
      ¶
    
   Click to show internal directories. 
   Click to hide internal directories.