gitee.com/sasukebo/go-micro/v4@v4.7.1/codec/bytes/marshaler.go (about)

     1  package bytes
     2  
     3  import (
     4  	"gitee.com/sasukebo/go-micro/v4/codec"
     5  )
     6  
     7  type Marshaler struct{}
     8  
     9  type Message struct {
    10  	Header map[string]string
    11  	Body   []byte
    12  }
    13  
    14  func (n Marshaler) Marshal(v interface{}) ([]byte, error) {
    15  	switch ve := v.(type) {
    16  	case *[]byte:
    17  		return *ve, nil
    18  	case []byte:
    19  		return ve, nil
    20  	case *Message:
    21  		return ve.Body, nil
    22  	}
    23  	return nil, codec.ErrInvalidMessage
    24  }
    25  
    26  func (n Marshaler) Unmarshal(d []byte, v interface{}) error {
    27  	switch ve := v.(type) {
    28  	case *[]byte:
    29  		*ve = d
    30  		return nil
    31  	case *Message:
    32  		ve.Body = d
    33  		return nil
    34  	}
    35  	return codec.ErrInvalidMessage
    36  }
    37  
    38  func (n Marshaler) String() string {
    39  	return "bytes"
    40  }