Beispiel #1
0
// ReadRequestHeader reads a Request.
func (c *pbServerCodec) ReadRequestHeader(r *rpc.Request) error {
	data, err := ReadNetString(c.rwc)
	if err != nil {
		return err
	}
	rtmp := new(Request)
	err = proto.Unmarshal(data, rtmp)
	if err != nil {
		return err
	}
	r.ServiceMethod = *rtmp.ServiceMethod
	r.Seq = *rtmp.Seq
	return nil
}
Beispiel #2
0
func (c *serverCodec) ReadRequestHeader(r *rpc.Request) error {
	c.req.reset()
	if err := c.dec.Decode(&c.req); err != nil {
		return err
	}
	r.ServiceMethod = c.req.Method

	// JSON request id can be any JSON value;
	// RPC package expects uint64.  Translate to
	// internal uint64 and save JSON on the side.
	c.mutex.Lock()
	c.seq++
	c.pending[c.seq] = c.req.ID
	c.req.ID = nil
	r.Seq = c.seq
	c.mutex.Unlock()

	return nil
}