67 lines
2.0 KiB
Go
67 lines
2.0 KiB
Go
// /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
|
||
}
|