incrpatch

package
v1.0.11 Latest Latest
Warning

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

Go to latest
Published: May 13, 2023 License: BSD-3-Clause Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FindChildValueReflect

func FindChildValueReflect(parent reflect.Value, keySeqs []string) (reflect.Value, bool)

FindChildValueReflect 通过反射方法在 parent 结构中查找 keySeqs 指定的子节点字段的反射值。 parent 必须是 map 或者 struct

func SetChildValueReflect

func SetChildValueReflect(parent reflect.Value, keySeqs []string, value interface{}) ([]string, error)

SetChildValueReflect 通过反射方法在 parent 的结构中设置其 keySeqs 指定的子节点的值

func SetValueReflect

func SetValueReflect(refValue reflect.Value, value interface{}) error

SetValueReflect 通过反射的方法对一个字段进行赋值

Types

type IncrRecords

type IncrRecords struct {
	// contains filtered or unexported fields
}

IncrRecords 数据增量记录表 用于存储一个文档型数据结构中的字段级增量标记,包括对每个字段的更新和删除的增量版本号

func NewIncrRecords

func NewIncrRecords() *IncrRecords

NewIncrRecords IncrRecords 构造函数

func (*IncrRecords) Delete

func (r *IncrRecords) Delete(key string)

Delete 指定的字段删除

func (*IncrRecords) Dirty

func (r *IncrRecords) Dirty() bool

Dirty 是否有脏标记,有任何改动记录都表示有脏数据

func (*IncrRecords) Reset

func (r *IncrRecords) Reset()

Reset 重置记录表为初始状态

func (*IncrRecords) Update

func (r *IncrRecords) Update(key string)

Update 指定的字段更新

type Packer

type Packer struct {
	// contains filtered or unexported fields
}

Packer 脏数据打包器,与一个数据实体是绑定关系

func NewPacker

func NewPacker(data interface{}, f Serializer) (*Packer, error)

NewPacker Packer 构造函数,传入数据实体,生成与其绑定的打包器

func (*Packer) Get

func (p *Packer) Get(key string) (interface{}, error)

Get 通过全反射结构表查询指定 key 对应的值

func (*Packer) Pack

func (p *Packer) Pack() (interface{}, error)

Pack 根据脏标记列表打增量补丁包并放入等待队列 为避免产生数据竞争,打包同时就用外部传入的序列化方法立刻将数据序列化

func (*Packer) Records

func (p *Packer) Records() *IncrRecords

Records 返回打包器中的改动记录

func (*Packer) Set

func (p *Packer) Set(key string, value interface{}) error

Set 通过全反射结构表设置指定 key 的值

type ReflectTable

type ReflectTable struct {
	// contains filtered or unexported fields
}

ReflectTable 数据实体的固定字段全反射表 用于在使用反射方法通过字段名 读取|写入 字段数据时,可以快速定位到字段变量的反射值,不需要再重新反射查找

func NewReflectTable

func NewReflectTable(root reflect.Value) *ReflectTable

NewReflectTable 构造一个数据实体的固定字段全反射表

func (*ReflectTable) FindParentOf

func (rt *ReflectTable) FindParentOf(key string) (reflect.Value, []string)

FindParentOf 在固定字段全反射表中找到 key 对应字段所属的父节点的反射值, 及其在父节点下的 subkey

func (*ReflectTable) GetValue

func (rt *ReflectTable) GetValue(key string) (reflect.Value, bool)

GetValue 获取固定字段全反射表中保存的指定字段的反射值

type Serializer

type Serializer func(up map[string]interface{}, del map[string]bool) (interface{}, error)

Serializer 序列化器方法定义,用于将提取出来的数据字段序列化,传入参数分别为 up: 发生更新的字段数据 del: 删除的字段

Jump to

Keyboard shortcuts

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