Skip to content

This repository makes it possible to implement data compression without transformations on the side of the application code. Excellent tool for integration with different data transfer protocols

Notifications You must be signed in to change notification settings

akhmaos/zstd-marshal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go ztds encoding with marshal

This repository makes it possible to implement data compression without transformations on the side of the application code. Excellent tool for integration with different data transfer protocols

References

  • Zstd realtime compress algorithm - zstd

Installation

go get github.com/akhmaos/zstd-marshal

Example

import zstdM "zstd-marshal"

type SomeStruct struct {
	Field       string `json:"Field"`
	SecondField string `json:"SecondField"`
}

We create some struct and set json tag for each because for parse struct we use json marshaling

Decode and encode without concurrency

func EncodeAndDecode() {
	someData := SomeStruct{
		"Test",
		"Test2",
	}

	encodedDataBytes, err := zstdM.Marshal(someData)

	if err != nil {
		return
	}

	var stForDecode SomeStruct

	err = zstdM.Unmarshal(encodedDataBytes, &stForDecode)
	if err != nil {
		return
	}

Decode and encode with concurrency

func EncodeAndDecodeWithConcurrency() {
	someData := SomeStruct{
		"Test",
		"Test2",
	}

	encodedDataBytes, err := zstdM.MarshalWithConcurrency(someData, runtime.GOMAXPROCS(-1))

	if err != nil {
		return
	}

	var stForDecode SomeStruct

	err = zstdM.UnmarshalWithConcurrency(encodedDataBytes, &stForDecode, runtime.GOMAXPROCS(-1))
	if err != nil {
		return
	}
}

About

This repository makes it possible to implement data compression without transformations on the side of the application code. Excellent tool for integration with different data transfer protocols

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages