本文整理汇总了Golang中github.com/coreos/go-etcd/etcd.Client.Update方法的典型用法代码示例。如果您正苦于以下问题:Golang Client.Update方法的具体用法?Golang Client.Update怎么用?Golang Client.Update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/coreos/go-etcd/etcd.Client
的用法示例。
在下文中一共展示了Client.Update方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: updateCommandFunc
// updateCommandFunc executes the "update" command.
func updateCommandFunc(cmd *cobra.Command, args []string, client *etcd.Client) (*etcd.Response, error) {
if len(args) == 0 {
return nil, errors.New("Key required")
}
key := args[0]
value, err := argOrStdin(args, os.Stdin, 1)
if err != nil {
return nil, errors.New("Value required")
}
ttl := updateTTLFlag
return client.Update(key, value, uint64(ttl))
}
示例2: acquire
func (locker *EtcdLocker) acquire(client *etcd.Client, key string, ttl uint64, wait bool) (Lock, error) {
hasLock := false
key = addPrefix(key)
lock, err := addLockDirChild(client, key)
if err != nil {
return nil, errgo.Mask(err)
}
for !hasLock {
res, err := client.Get(key, true, true)
if err != nil {
return nil, errgo.Mask(err)
}
if len(res.Node.Nodes) > 1 {
sort.Sort(res.Node.Nodes)
if res.Node.Nodes[0].CreatedIndex != lock.Node.CreatedIndex {
if !wait {
client.Delete(lock.Node.Key, false)
return nil, &Error{res.Node.Nodes[0].Value}
} else {
err = locker.Wait(lock.Node.Key)
if err != nil {
return nil, errgo.Mask(err)
}
}
} else {
// if the first index is the current one, it's our turn to lock the key
hasLock = true
}
} else {
// If there are only 1 node, it's our, lock is acquired
hasLock = true
}
}
// If we get the lock, set the ttl and return it
_, err = client.Update(lock.Node.Key, lock.Node.Value, ttl)
if err != nil {
return nil, errgo.Mask(err)
}
return &EtcdLock{client, lock.Node.Key, lock.Node.CreatedIndex}, nil
}