futriis/internal/msgpack/serializer.go

67 lines
2.0 KiB
Go
Raw Permalink Normal View History

2026-02-23 22:48:31 +03:00
// /futriis/internal/msgpack/serializer.go
// Пакет msgpack реализует сериализацию и десериализацию данных с использованием MessagePack
// /futriis/internal/msgpack/serializer.go
package msgpack
import (
"futriis/pkg/types"
"github.com/vmihailenco/msgpack/v5"
)
// Serializer предоставляет методы для сериализации данных
type Serializer struct {
enc *msgpack.Encoder
dec *msgpack.Decoder
}
// NewSerializer создаёт новый экземпляр сериализатора
func NewSerializer() *Serializer {
return &Serializer{}
}
// SerializeTuple сериализует кортеж в формат MessagePack
func (s *Serializer) SerializeTuple(tuple *types.Tuple) ([]byte, error) {
return msgpack.Marshal(tuple)
}
// DeserializeTuple десериализует кортеж из формата MessagePack
func (s *Serializer) DeserializeTuple(data []byte) (*types.Tuple, error) {
var tuple types.Tuple
err := msgpack.Unmarshal(data, &tuple)
if err != nil {
return nil, err
}
return &tuple, nil
}
// SerializeSlice сериализует слайс в формат MessagePack
func (s *Serializer) SerializeSlice(slice *types.Slice) ([]byte, error) {
return msgpack.Marshal(slice)
}
// DeserializeSlice десериализует слайс из формата MessagePack
func (s *Serializer) DeserializeSlice(data []byte) (*types.Slice, error) {
var slice types.Slice
err := msgpack.Unmarshal(data, &slice)
if err != nil {
return nil, err
}
return &slice, nil
}
// SerializeTapple сериализует таппл в формат MessagePack
func (s *Serializer) SerializeTapple(tapple *types.Tapple) ([]byte, error) {
return msgpack.Marshal(tapple)
}
// DeserializeTapple десериализует таппл из формата MessagePack
func (s *Serializer) DeserializeTapple(data []byte) (*types.Tapple, error) {
var tapple types.Tapple
err := msgpack.Unmarshal(data, &tapple)
if err != nil {
return nil, err
}
return &tapple, nil
}