futriis/internal/msgpack/serializer.go

67 lines
2.0 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// /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
}