data_util

package
v1.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 3, 2024 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ErrCodeSuccess = iota
	ErrCodeDeconstruct
	ErrCodeParamError
	ErrCodeDataNotFound
	ErrCodeDataAlreadyExists
	ErrCodeDataAlreadyDeleted
	ErrCodeLoadDataFailed
	ErrCodeNoEnoughShmMem
	ErrcodeShmMemIsNil
)
View Source
const (
	DataUnitOpTypeNone = iota
	DataUnitOpTypeSet
	DataUnitOpTypeAdd
	DataUnitOpTypeDel
)
View Source
const (
	MaxNodeID = 16384
)

Variables

View Source
var PrintTest = false

Functions

func GetCRCString

func GetCRCString(id string) uint16

Types

type DataErr

type DataErr struct {
	Errcode int
}

func NewDataErr

func NewDataErr(err_code int) *DataErr

func (*DataErr) Error

func (de *DataErr) Error() string

type DataLandingPtr

type DataLandingPtr[K cmp.Ordered, T any] struct {
	Dirty  bool            // 是否需要更新
	ShmPtr *PoolData[K, T] // 指向共享内存的指针
}

func (*DataLandingPtr[K, T]) Set

func (p *DataLandingPtr[K, T]) Set(Key K, data T) error

type DataMgr

type DataMgr[K cmp.Ordered, V any, TSHM any] struct {
	// contains filtered or unexported fields
}

创建后便不可销毁

func CreateDataMgr

func CreateDataMgr[K cmp.Ordered, V any, TSHM any](max_size int,
	load_data_func func(K) (V, error),
	load_func func(*DataMgr[K, V, TSHM]),
	fetch_shm_func func() (TSHM, error),
	release_shm_func func(*TSHM),
	data_del_func func(*DataUnit[V, TSHM]),
	data_load_func func(*V, *TSHM),
	data_create_func func(k K, v V) (V, error),
	data_landing_func func(*DataUnit[V, TSHM]),
) *DataMgr[K, V, TSHM]

*

  • 创建数据管理器
  • @param max_size 最大缓存大小
  • @param load_data_func 加载数据
  • @param load_func 加载函数(加载共享内存,并初始化数据)
  • @param fetch_shm_func 获取共享内存
  • @param release_shm_func 释放共享内存
  • @param data_del_func 数据删除
  • @param data_load_func 数据加载
  • @param data_create_func 数据创建(直接落地到db,成功则说明创建成功,失败则说明数据落地失败)
  • @param landing_func 数据落地
  • @return 数据管理器

func (*DataMgr[K, V, TSHM]) DelData

func (dm *DataMgr[K, V, TSHM]) DelData(k K, f func(K, *V) error)

func (*DataMgr[K, V, TSHM]) GetCacheSize

func (dm *DataMgr[K, V, TSHM]) GetCacheSize() int

func (*DataMgr[K, V, TSHM]) NewData

func (dm *DataMgr[K, V, TSHM]) NewData(k K, h int, v V, cb func(V, error))

上层保证key的唯一性

func (*DataMgr[K, V, TSHM]) OpData

func (dm *DataMgr[K, V, TSHM]) OpData(key K, h int, cb func(K, error), f func(*V, *TSHM) error)

*

  • 操作数据
  • @param key 数据的key
  • @param h 数据的hash值
  • @param cb 回调函数,只通知f投递的结果,不关心具体执行
  • @param f 操作数据的函数

func (*DataMgr[K, V, TSHM]) PushData

func (dm *DataMgr[K, V, TSHM]) PushData(k K, h int, v V, shm TSHM)

将数据加载到缓存中 只会在load_func中调用

type DataPreparePtr

type DataPreparePtr[K cmp.Ordered, T any] struct {
	ShmPtr *PoolData[K, T] // 指向共享内存的指针
}

type DataUnit

type DataUnit[T any, TSHM any] struct {
	Data    T
	ShmData TSHM

	Landing   func(*DataUnit[T, TSHM]) // 数据落地
	DBLanding func(func())             // 放到datamgr中执行
	// contains filtered or unexported fields
}

func CreateDataUnit

func CreateDataUnit[T any, TSHM any](data T, shm_data TSHM, landing func(*DataUnit[T, TSHM]), db_landing func(func())) *DataUnit[T, TSHM]

type PoolData

type PoolData[K cmp.Ordered, T any] struct {
	Key      K
	Data     T
	UesShm   bool
	Recorded bool
	OpType   int // 操作类型
}

func (*PoolData[K, T]) Set

func (p *PoolData[K, T]) Set(Key K, data T) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL