github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/lib/srpc/coders.go (about)

     1  package srpc
     2  
     3  import (
     4  	"encoding/gob"
     5  	"encoding/json"
     6  	"io"
     7  )
     8  
     9  type coderMaker interface {
    10  	MakeDecoder(r io.Reader) Decoder
    11  	MakeEncoder(w io.Writer) Encoder
    12  }
    13  
    14  type gobCoder struct{}
    15  
    16  func (c *gobCoder) MakeDecoder(r io.Reader) Decoder {
    17  	return gob.NewDecoder(r)
    18  }
    19  
    20  func (c *gobCoder) MakeEncoder(w io.Writer) Encoder {
    21  	return gob.NewEncoder(w)
    22  }
    23  
    24  type jsonCoder struct{}
    25  
    26  func (c *jsonCoder) MakeDecoder(r io.Reader) Decoder {
    27  	return json.NewDecoder(r)
    28  }
    29  
    30  func (c *jsonCoder) MakeEncoder(w io.Writer) Encoder {
    31  	return json.NewEncoder(w)
    32  }