Documentation ¶
Overview ¶
Copyright 2016 CoreOS, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2016 CoreOS, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
- Variables
- func NewLocker(client *clientv3.Client, key string) sync.Locker
- func NewSTM(client *clientv3.Client, apply func(*STM) error) <-chan error
- func RevokeSessionLease(client *clientv3.Client) (err error)
- func SessionLease(client *clientv3.Client) (lease.LeaseID, error)
- func SessionLeaseTTL(client *clientv3.Client, ttl int64) (lease.LeaseID, error)
- func StopSessionLease(client *clientv3.Client)
- func WaitEvents(c *clientv3.Client, key string, rev int64, evs []storagepb.Event_EventType) (*storagepb.Event, error)
- func WaitPrefixEvents(c *clientv3.Client, prefix string, rev int64, evs []storagepb.Event_EventType) (*storagepb.Event, error)
- type Barrier
- type DoubleBarrier
- type Election
- type EphemeralKV
- type Mutex
- type PriorityQueue
- type Queue
- type RWMutex
- type Range
- func (r *Range) FirstCreate() (*pb.RangeResponse, error)
- func (r *Range) FirstKey() (*pb.RangeResponse, error)
- func (r *Range) FirstRev() (*pb.RangeResponse, error)
- func (r *Range) LastCreate() (*pb.RangeResponse, error)
- func (r *Range) LastKey() (*pb.RangeResponse, error)
- func (r *Range) LastRev() (*pb.RangeResponse, error)
- func (r *Range) OpenInterval() (*pb.RangeResponse, error)
- func (r *Range) Prefix() (*pb.RangeResponse, error)
- type RemoteKV
- func GetRemoteKV(client *clientv3.Client, key string) (*RemoteKV, error)
- func NewKV(client *clientv3.Client, key, val string, leaseID lease.LeaseID) (*RemoteKV, error)
- func NewKey(client *clientv3.Client, key string, leaseID lease.LeaseID) (*RemoteKV, error)
- func NewSequentialKV(client *clientv3.Client, prefix, val string) (*RemoteKV, error)
- func NewUniqueKV(client *clientv3.Client, prefix string, val string, leaseID lease.LeaseID) (*RemoteKV, error)
- func NewUniqueKey(client *clientv3.Client, prefix string) (*RemoteKV, error)
- type STM
- type Watcher
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func RevokeSessionLease ¶
RevokeSessionLease revokes the session lease.
func SessionLeaseTTL ¶
func StopSessionLease ¶
StopSessionLease ends the refresh for the session lease. This is useful in case the state of the client connection is indeterminate (revoke would fail) or if transferring lease ownership.
Types ¶
type Barrier ¶
type Barrier struct {
// contains filtered or unexported fields
}
Barrier creates a key in etcd to block processes, then deletes the key to release all blocked processes.
type DoubleBarrier ¶
type DoubleBarrier struct {
// contains filtered or unexported fields
}
DoubleBarrier blocks processes on Enter until an expected count enters, then blocks again on Leave until all processes have left.
func NewDoubleBarrier ¶
func NewDoubleBarrier(client *clientv3.Client, key string, count int) *DoubleBarrier
func (*DoubleBarrier) Enter ¶
func (b *DoubleBarrier) Enter() error
Enter waits for "count" processes to enter the barrier then returns
func (*DoubleBarrier) Leave ¶
func (b *DoubleBarrier) Leave() error
Leave waits for "count" processes to leave the barrier then returns
type Election ¶
type Election struct {
// contains filtered or unexported fields
}
func NewElection ¶
NewElection returns a new election on a given key prefix.
type EphemeralKV ¶
type EphemeralKV struct{ RemoteKV }
EphemeralKV is a new key associated with a session lease
func NewEphemeralKV ¶
func NewEphemeralKV(client *clientv3.Client, key, val string) (*EphemeralKV, error)
NewEphemeralKV creates a new key/value pair associated with a session lease
func NewUniqueEphemeralKV ¶
func NewUniqueEphemeralKV(client *clientv3.Client, prefix, val string) (ek *EphemeralKV, err error)
NewUniqueEphemeralKV creates a new unique key/value pair associated with a session lease
func NewUniqueEphemeralKey ¶
func NewUniqueEphemeralKey(client *clientv3.Client, prefix string) (*EphemeralKV, error)
NewUniqueEphemeralKey creates a new unique valueless key associated with a session lease
type Mutex ¶
type Mutex struct {
// contains filtered or unexported fields
}
Mutex implements the sync Locker interface with etcd
type PriorityQueue ¶
type PriorityQueue struct {
// contains filtered or unexported fields
}
PriorityQueue implements a multi-reader, multi-writer distributed queue.
func NewPriorityQueue ¶
func NewPriorityQueue(client *clientv3.Client, key string) *PriorityQueue
NewPriorityQueue creates an etcd priority queue.
func (*PriorityQueue) Dequeue ¶
func (q *PriorityQueue) Dequeue() (string, error)
Dequeue returns Enqueue()'d items in FIFO order. If the queue is empty, Dequeue blocks until items are available.
type Queue ¶
type Queue struct {
// contains filtered or unexported fields
}
Queue implements a multi-reader, multi-writer distributed queue.
type Range ¶
type Range struct {
// contains filtered or unexported fields
}
func (*Range) FirstCreate ¶
func (r *Range) FirstCreate() (*pb.RangeResponse, error)
func (*Range) LastCreate ¶
func (r *Range) LastCreate() (*pb.RangeResponse, error)
func (*Range) OpenInterval ¶
func (r *Range) OpenInterval() (*pb.RangeResponse, error)
OpenInterval gets the keys in the set <key>* - <key>
type RemoteKV ¶
type RemoteKV struct {
// contains filtered or unexported fields
}
Key is a key/revision pair created by the client and stored on etcd
func NewSequentialKV ¶
NewSequentialKV allocates a new sequential key-value pair at <prefix>/nnnnn
func NewUniqueKV ¶
type STM ¶
type STM struct {
// contains filtered or unexported fields
}
STM implements software transactional memory over etcd
func (*STM) Abort ¶
func (s *STM) Abort()
Abort abandons the apply loop, letting the transaction close without a commit.
type Watcher ¶
type Watcher struct {
// contains filtered or unexported fields
}