本文整理汇总了Golang中github.com/coreos/etcd/etcdserver/etcdserverpb.Lease_LeaseKeepAliveServer类的典型用法代码示例。如果您正苦于以下问题:Golang Lease_LeaseKeepAliveServer类的具体用法?Golang Lease_LeaseKeepAliveServer怎么用?Golang Lease_LeaseKeepAliveServer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Lease_LeaseKeepAliveServer类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: LeaseKeepAlive
func (ls *LeaseServer) LeaseKeepAlive(stream pb.Lease_LeaseKeepAliveServer) error {
for {
req, err := stream.Recv()
if err == io.EOF {
return nil
}
if err != nil {
return err
}
ttl, err := ls.le.LeaseRenew(lease.LeaseID(req.ID))
if err == lease.ErrLeaseNotFound {
return rpctypes.ErrLeaseNotFound
}
if err != nil && err != lease.ErrLeaseNotFound {
return err
}
resp := &pb.LeaseKeepAliveResponse{ID: req.ID, TTL: ttl}
err = stream.Send(resp)
if err != nil {
return err
}
}
}
开发者ID:Clarifai,项目名称:kubernetes,代码行数:26,代码来源:lease.go
示例2: LeaseKeepAlive
func (ls *LeaseServer) LeaseKeepAlive(stream pb.Lease_LeaseKeepAliveServer) error {
for {
req, err := stream.Recv()
if err == io.EOF {
return nil
}
if err != nil {
return err
}
ttl, err := ls.le.LeaseRenew(lease.LeaseID(req.ID))
if err != nil {
if err == lease.ErrLeaseNotFound {
return ErrLeaseNotFound
}
// TODO: handle not primary error by forwarding renew requests to leader
panic("TODO: handle not primary error by forwarding renew requests to leader")
}
resp := &pb.LeaseKeepAliveResponse{ID: req.ID, TTL: ttl}
err = stream.Send(resp)
if err != nil {
return err
}
}
}
开发者ID:hadoop835,项目名称:etcd,代码行数:26,代码来源:lease.go
示例3: LeaseKeepAlive
func (ls *LeaseServer) LeaseKeepAlive(stream pb.Lease_LeaseKeepAliveServer) error {
for {
req, err := stream.Recv()
if err == io.EOF {
return nil
}
if err != nil {
return err
}
// Create header before we sent out the renew request.
// This can make sure that the revision is strictly smaller or equal to
// when the keepalive happened at the local server (when the local server is the leader)
// or remote leader.
// Without this, a lease might be revoked at rev 3 but client can see the keepalive succeeded
// at rev 4.
resp := &pb.LeaseKeepAliveResponse{ID: req.ID, Header: &pb.ResponseHeader{}}
ls.hdr.fill(resp.Header)
ttl, err := ls.le.LeaseRenew(lease.LeaseID(req.ID))
if err == lease.ErrLeaseNotFound {
err = nil
ttl = 0
}
if err != nil {
return err
}
resp.TTL = ttl
err = stream.Send(resp)
if err != nil {
return err
}
}
}
开发者ID:CliffYuan,项目名称:etcd,代码行数:36,代码来源:lease.go
示例4: LeaseKeepAlive
func (lp *leaseProxy) LeaseKeepAlive(stream pb.Lease_LeaseKeepAliveServer) error {
conn := lp.client.ActiveConnection()
ctx, cancel := context.WithCancel(stream.Context())
lc, err := pb.NewLeaseClient(conn).LeaseKeepAlive(ctx)
if err != nil {
cancel()
return err
}
go func() {
// Cancel the context attached to lc to unblock lc.Recv when
// this routine returns on error.
defer cancel()
for {
// stream.Recv will be unblock when the loop in the parent routine
// returns on error.
rr, err := stream.Recv()
if err != nil {
return
}
err = lc.Send(rr)
if err != nil {
return
}
}
}()
for {
rr, err := lc.Recv()
if err != nil {
return err
}
err = stream.Send(rr)
if err != nil {
return err
}
}
}
开发者ID:mgurevin,项目名称:etcd,代码行数:39,代码来源:lease.go
注:本文中的github.com/coreos/etcd/etcdserver/etcdserverpb.Lease_LeaseKeepAliveServer类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论