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