24 lines
1.3 KiB
Go
24 lines
1.3 KiB
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
|
|
"telesrv/internal/domain"
|
|
)
|
|
|
|
// UpdateStateStore 持久化 auth_key + user 维度的 pts/qts/seq 状态,避免同一设备换号串状态。
|
|
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
|
|
}
|