Initial open source release
This commit is contained in:
commit
74992e893f
377 changed files with 118084 additions and 0 deletions
26
internal/store/allocator.go
Normal file
26
internal/store/allocator.go
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
package store
|
||||
|
||||
import "context"
|
||||
|
||||
// PtsAllocator 分配用户级 pts。实现必须保证同一 user 内单调递增。
|
||||
type PtsAllocator interface {
|
||||
NextPts(ctx context.Context, userID int64) (int, error)
|
||||
CurrentPts(ctx context.Context, userID int64) (int, error)
|
||||
}
|
||||
|
||||
// PtsRangeAllocator 可一次性分配一段连续 pts,返回该段最终 pts。
|
||||
// 批量事件(例如 updateDeleteMessages)必须用 pts_count 推进多步时使用它。
|
||||
type PtsRangeAllocator interface {
|
||||
NextPtsN(ctx context.Context, userID int64, count int) (int, error)
|
||||
}
|
||||
|
||||
// BoxIDAllocator 分配用户视角 message box id。box_id 允许空洞,但不能回退。
|
||||
type BoxIDAllocator interface {
|
||||
NextBoxID(ctx context.Context, userID int64) (int, error)
|
||||
CurrentBoxID(ctx context.Context, userID int64) (int, error)
|
||||
}
|
||||
|
||||
// CounterSource 用于 Redis 计数器冷启动时从 PostgreSQL durable log 恢复当前值。
|
||||
type CounterSource interface {
|
||||
Current(ctx context.Context, userID int64) (int, error)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue