ficklepickle

package module
v0.0.0-...-4f179d5 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2022 License: MIT Imports: 9 Imported by: 0

README

ficklepickle

it's a simple struct pickling library with compression and encryption

read/write/delete available over file, db and tcp server

FicklePickle | Go Report Card


Usage

  • to fetch this go package go get -u github.com/abhishekkr/ficklepickle

  • import required to use import "github.com/abhishekkr/ficklepickle"

  • say we have a structure

type Metric struct {
  Name string
  Percent int
}

xload = Metric{Name: "somework", Percent: 25}
yload := Metric{}
In memory
  • Pickle
pickle, err := ficklepickle.Pickle(xload)
if err != nil {
  panic("Pickle error for Metric")
}
// pickled data is 'pickle' as byte array
  • UnPickle
if err := ficklepickle.Unpickle(pickle, &yload); err != nil {
  panic("Unpickle error for Metric")
}
fmt.Println(yload.Name) // shall output 'somework'
Persist using a mode (local file, database; remote TCP service)
// for normal local file
mode = ficklepickle.RwFile

// for github.com/abhishekkr/gol/golkeyval supported database
mode = ficklepickle.RwDb // database type default: leveldb, configurable

// for remote TCP server hosted pickles, can be used to share across services
// sample TCP service can be created similar to example code at: _tests_behavioral_/fickle_server.go
mode = ficklepickle.RwRpc // remote database type default: leveldb, configurable in Rpc Server
  • Pickle
err := ficklepickle.Write(mode, "metric_xload", xload)
if err != nil {
  panic("Pickle error for Metric")
}
  • UnPickle
if err := ficklepickle.Read(mode, "metric_xload", &yload); err != nil {
  panic("Unpickle error for Metric")
}
fmt.Println(yload.Name) // shall output 'somework'
  • Delete Pickle
if err := ficklepickle.Delete(mode, "metric_xload"); err != nil {
  panic("Delete pickle error for Metric")
}


Documentation

Index

Constants

View Source
const (
	// RwVanillaFile is read/write to use simple one file per pickle.
	RwVanillaFile = "vanilla-file"

	// RwFile is alias to RwVanillaFile.
	RwFile = "file"

	// RwDb is read/write mode to use a DB for pickle persistence (database type gets managed by config.RwDbDriver).
	RwDb = "database"

	// RwRpc is read/write mode to use a TCP ficklepickle server for pickle persistence (database type gets managed by config.RwDbDriver).
	RwRpc = "rpc"
)

Variables

This section is empty.

Functions

func CloseDatabase

func CloseDatabase()

CloseDatabase forwards close operation for database.

func CloseTcpServer

func CloseTcpServer()

CloseTcpServer forwards close of tcp server to ficklerpc.

func Delete

func Delete(mode string, id string) error

Delete returns error state for removing pickle of provided provided 'id' using 'mode'.

func Pickle

func Pickle(data interface{}) (blob []byte, err error)

Pickle returns pickled byte array and error state for provided 'data' as interface.

func Read

func Read(mode string, id string, skeleton interface{}) error

Read returns error state for restoring pickle of provided 'id' using 'mode'; updates provided reference to 'skeleton' interface Go type.

func StartTcpServer

func StartTcpServer()

StartTcpServer forwards start of tcp server to ficklerpc.

func Unpickle

func Unpickle(data []byte, skeleton interface{}) error

Unpickle returns error state for provided 'data' byte array, updates provided reference to interface for Go type.

func Write

func Write(mode string, id string, data interface{}) error

Write returns error state for persisting pickle of provided 'data' as interface mapped to provided 'id' using 'mode'.

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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