59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
package codec
|
|
|
|
import "gopkg.in/yaml.v3"
|
|
|
|
// Frame gives us the ability to define raw data to send over the pipes
|
|
type Frame struct {
|
|
Data []byte
|
|
}
|
|
|
|
// NewFrame returns new frame with data
|
|
func NewFrame(data []byte) *Frame {
|
|
return &Frame{Data: data}
|
|
}
|
|
|
|
// MarshalJSON returns frame data
|
|
func (m *Frame) MarshalJSON() ([]byte, error) {
|
|
return m.Marshal()
|
|
}
|
|
|
|
// UnmarshalJSON set frame data
|
|
func (m *Frame) UnmarshalJSON(data []byte) error {
|
|
return m.Unmarshal(data)
|
|
}
|
|
|
|
// MarshalYAML returns frame data
|
|
func (m *Frame) MarshalYAML() ([]byte, error) {
|
|
return m.Marshal()
|
|
}
|
|
|
|
// UnmarshalYAML set frame data
|
|
func (m *Frame) UnmarshalYAML(n *yaml.Node) error {
|
|
m.Data = []byte(n.Value)
|
|
return nil
|
|
}
|
|
|
|
// ProtoMessage noop func
|
|
func (m *Frame) ProtoMessage() {}
|
|
|
|
// Reset resets frame
|
|
func (m *Frame) Reset() {
|
|
*m = Frame{}
|
|
}
|
|
|
|
// String returns frame as string
|
|
func (m *Frame) String() string {
|
|
return string(m.Data)
|
|
}
|
|
|
|
// Marshal returns frame data
|
|
func (m *Frame) Marshal() ([]byte, error) {
|
|
return m.Data, nil
|
|
}
|
|
|
|
// Unmarshal set frame data
|
|
func (m *Frame) Unmarshal(data []byte) error {
|
|
m.Data = data
|
|
return nil
|
|
}
|