Skip to content

ETZhangSX/dbuffer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DBuffer

Go Doc Go Report Card

Package dbuffer is a Go 1.18+ package using double-buffer to achieve data hot update.

Usage:

package main

import (
    "fmt"
    "log"

    "github.com/ETZhangSX/dbuffer"
)

// implement loader for updating data.
type loader struct {
}

func(l *loader) Load(dest *map[string]string) {
    // update data
    *dest = make(map[string]string)
    *dest["key"] = "value"
}

func main() {
    // alloc func to create obj
    var alloc dbuffer.Alloc[map[string]string] = func() map[string]string {
        obj := map[string]string{}
        return obj
    }
    // update interval
    interval := 30 * time.Second
    buf := dbuffer.New[map[string]string](&loader{}, alloc, dbuffer.WithInterval(interval))

    // get data
    m1 := buf.Data()
    fmt.Println(m1["key"])

    // get data with done, which will block updates to current buffer util all refs done.
    m2, done := buf.DataWithDone()
    defer done()
    fmt.Println(m2["key"])
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages