Package session defines API for the session storage.



This section is empty.


This section is empty.


This section is empty.


type ID

type ID []byte

ID identifies a session.

func GenerateID

func GenerateID() ID

GenerateID generates a new random session ID or panics if there's not enough entropy.

func (ID) String

func (id ID) String() string

String is used to format the ID for logging.

type Store

type Store interface {
	// FetchSession fetches an existing session with the given ID.
	// Returns (nil, nil) if there's no such session. All errors are transient.
	FetchSession(ctx context.Context, id ID) (*sessionpb.Session, error)

	// UpdateSession transactionally updates or creates a session.
	// If fetches the session, calls the callback to mutate it, and stores the
	// result. If it is a new session, the callback receives an empty proto.
	// The callback may be called multiple times in case the transaction is
	// retried. Errors from callbacks are returned as is. All other errors are
	// transient.
	UpdateSession(ctx context.Context, id ID, cb func(*sessionpb.Session) error) error

Store is a persistent transactional-capable storage of user sessions.

Session IDs are assumed to be generated by GenerateID, i.e. be high-entropy random blobs.

Source Files


Path Synopsis
Package datastore implements session storage over Cloud Datastore.
Package datastore implements session storage over Cloud Datastore.