Ctrl K
ComunidadGuías…

internal/store/updatestate.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package store

import (
	"context"

	"telesrv/internal/domain"
)

// UpdateStateStore persists pts/qts/seq state at the auth_key + user dimension, preventing state bleed when the same device switches accounts.
type UpdateStateStore interface {
	Get(ctx context.Context, authKeyID [8]byte, userID int64) (domain.UpdateState, bool, error)
	Save(ctx context.Context, authKeyID [8]byte, userID int64, state domain.UpdateState) error
	// CommitDeliveredState atomically advances the cursor proven by one physically
	// delivered response. Baseline mode advances confirmed and observed together;
	// delivered-only mode must leave observed untouched.
	CommitDeliveredState(ctx context.Context, authKeyID [8]byte, userID int64, state domain.UpdateState, mode domain.UpdateStateCommitMode) error
	// ObserveClientState advances only the state that the client has proved it already owns by
	// carrying it in a request. An audited getState baseline advances the same watermark only via
	// the atomic CommitDeliveredState baseline mode after physical delivery. Durable-log retention
	// must use this watermark, never a response state merely sent by server.
	ObserveClientState(ctx context.Context, authKeyID [8]byte, userID int64, state domain.UpdateState) error
	Delete(ctx context.Context, authKeyID [8]byte, userID int64) error
	DeleteAuthKey(ctx context.Context, authKeyID [8]byte) error
}