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