clientv3/lease.go
func (l *lessor) sendKeepAliveLoop(stream pb.Lease_LeaseKeepAliveClient) {
	for {
		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
			}
		}

		select {
		case <-time.After(retryConnWait):
		case <-stream.Context().Done():
			return
		case <-l.donec:
			return
		case <-l.stopCtx.Done():
			return
		}
	}
}
func (l *lessor) sendKeepAliveLoop(stream pb.Lease_LeaseKeepAliveClient) {
	for {
		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
			}
		}

		select {
		case <-time.After(retryConnWait):
		case <-stream.Context().Done():
			return
		case <-l.donec:
			return
		case <-l.stopCtx.Done():
			return
		}
	}
}
func ( l * lessor ) sendKeepAliveLoop ( stream pb . Lease_LeaseKeepAliveClient ) { for { 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 } } select { case <- time . After ( retryConnWait ) : case <- stream . Context ( ) . Done ( ) : return case <- l . donec : return case <- l . stopCtx . Done ( ) : return } } }
// sendKeepAliveLoop sends keep alive requests for the lifetime of the given stream.
sendKeepAliveLoop sends keep alive requests for the lifetime of the given stream .