本文整理汇总了Golang中github.com/coreos/etcd/etcdserver/etcdserverpb.Lease_LeaseKeepAliveClient类的典型用法代码示例。如果您正苦于以下问题:Golang Lease_LeaseKeepAliveClient类的具体用法?Golang Lease_LeaseKeepAliveClient怎么用?Golang Lease_LeaseKeepAliveClient使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Lease_LeaseKeepAliveClient类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: sendKeepAliveLoop
// sendKeepAliveLoop sends LeaseKeepAliveRequests for the lifetime of a lease stream
func (l *lessor) sendKeepAliveLoop(stream pb.Lease_LeaseKeepAliveClient) {
for {
select {
case <-time.After(500 * time.Millisecond):
case <-stream.Context().Done():
return
case <-l.donec:
return
case <-l.stopCtx.Done():
return
}
var tosend []LeaseID
now := time.Now()
l.mu.Lock()
for id, ka := range l.keepAlives {
if ka.nextKeepAlive.Before(now) {
tosend = append(tosend, id)
}
}
l.mu.Unlock()
for _, id := range tosend {
r := &pb.LeaseKeepAliveRequest{ID: int64(id)}
if err := stream.Send(r); err != nil {
// TODO do something with this error?
return
}
}
}
}
示例2: sendKeepAliveLoop
// sendKeepAliveLoop sends LeaseKeepAliveRequests for the lifetime of a lease stream
func (l *lessor) sendKeepAliveLoop(stream pb.Lease_LeaseKeepAliveClient) {
for {
select {
case <-time.After(500 * time.Millisecond):
case <-l.donec:
return
case <-l.stopCtx.Done():
return
}
tosend := make([]lease.LeaseID, 0)
now := time.Now()
l.mu.Lock()
for id, d := range l.deadlines {
if d.Before(now) {
tosend = append(tosend, id)
}
}
l.mu.Unlock()
for _, id := range tosend {
r := &pb.LeaseKeepAliveRequest{ID: int64(id)}
if err := stream.Send(r); err != nil {
// TODO do something with this error?
return
}
}
}
}
示例3: leaseKeepAliveRecvLoop
func leaseKeepAliveRecvLoop(kStream pb.Lease_LeaseKeepAliveClient, nextC chan int64) {
for {
resp, err := kStream.Recv()
if err == io.EOF {
os.Exit(ExitSuccess)
}
if err != nil {
ExitWithError(ExitError, err)
}
fmt.Printf("lease %016x keepalived with TTL(%d)\n", resp.ID, resp.TTL)
nextC <- resp.TTL
}
}