package message import ( "encoding/json" ) // GRPCConvertedMessage is an interface // of the gRPC message that is used // for Message encoding/decoding. type GRPCConvertedMessage interface { UnmarshalProtobuf([]byte) error } // Unmarshal decodes m from its Protobuf binary representation // via related gRPC message. // // gm should be tof the same type as the m.ToGRPCMessage() return. func Unmarshal(m Message, data []byte, gm GRPCConvertedMessage) error { if err := gm.UnmarshalProtobuf(data); err != nil { return err } return m.FromGRPCMessage(gm) } // MarshalJSON encodes m to Protobuf JSON representation. func MarshalJSON(m Message) ([]byte, error) { return json.Marshal(m.ToGRPCMessage()) } // UnmarshalJSON decodes m from its Protobuf JSON representation // via related gRPC message. // // gm should be tof the same type as the m.ToGRPCMessage() return. func UnmarshalJSON(m Message, data []byte, gm any) error { if err := json.Unmarshal(data, gm); err != nil { return err } return m.FromGRPCMessage(gm) }