const defaultSessionTTL … type Session … // NewSession gets the leased session for a client. func NewSession(client *v3.Client, opts ...SessionOption) (*Session, error) { … } // Client is the etcd client that is attached to the session. func (s *Session) Client() *v3.Client { … } // Lease is the lease ID for keys bound to the session. func (s *Session) Lease() v3.LeaseID { … } // Done returns a channel that closes when the lease is orphaned, expires, or // is otherwise no longer being refreshed. func (s *Session) Done() <-chan struct{ … } // Orphan ends the refresh for the session lease. This is useful // in case the state of the client connection is indeterminate (revoke // would fail) or when transferring lease ownership. func (s *Session) Orphan() { … } // Close orphans the session and revokes the session lease. func (s *Session) Close() error { … } type sessionOptions … type SessionOption … // WithTTL configures the session's TTL in seconds. // If TTL is <= 0, the default 60 seconds TTL will be used. func WithTTL(ttl int) SessionOption { … } // WithLease specifies the existing leaseID to be used for the session. // This is useful in process restart scenario, for example, to reclaim // leadership from an election prior to restart. func WithLease(leaseID v3.LeaseID) SessionOption { … } // WithContext assigns a context to the session instead of defaulting to // using the client context. This is useful for canceling NewSession and // Close operations immediately without having to close the client. If the // context is canceled before Close() completes, the session's lease will be // abandoned and left to expire instead of being revoked. func WithContext(ctx context.Context) SessionOption { … }