func (s *codec) writeHeaderData(header *rpc4.Header, data []byte) (err error) { if len(data) > 0 { header.PayloadPresent = proto.Bool(true) } if err = writeProto(s.w, header); err == nil && header.GetPayloadPresent() { err = writeData(s.w, data) } return }
func (s *codec) ReadResponseHeader(resp *rpc.Response) error { if s.Shutdown { return rpc.ErrShutdown } var header rpc4.Header if err := readProto(s.r, &header); err != nil { return err } if header.GetMethod() == "" { return fmt.Errorf("header missing method: %s", header) } resp.ServiceMethod = header.GetMethod() resp.Seq = header.GetSequence() s.responsePayload = header.GetPayloadPresent() return nil }