func (r respCall) EncodeMsgpack(enc *msgpack.Encoder) error { if r.Err == nil { err := enc.Encode(util.ErrNil) if err != nil { return e.Forward(err) } } else { err := enc.Encode(util.ErrOk) if err != nil { return e.Forward(err) } switch v := r.Err.(type) { case *e.Error: err = enc.Encode(util.ErrorPriv) if err != nil { return e.Forward(err) } err = enc.Encode(types.Name(r.Err)) if err != nil { return e.Forward(err) } err = enc.Encode(r.Err) if err != nil { return e.Forward(err) } case error: err = enc.Encode(util.ErrorInt) if err != nil { return e.Forward(err) } err = enc.Encode(v.Error()) if err != nil { return e.Forward(err) } } } err := enc.Encode(len(r.Vals)) if err != nil { return e.Forward(err) } for _, arg := range r.Vals { err := util.MsgPackEncode(enc, arg) if err != nil { return e.Forward(err) } } return nil }
func (r reqCall) EncodeMsgpack(enc *msgpack.Encoder) error { err := enc.Encode(r.Method) if err != nil { return e.Forward(err) } err = enc.Encode(len(r.Args)) if err != nil { return e.Forward(err) } for _, arg := range r.Args { err := util.MsgPackEncode(enc, arg) if err != nil { return e.Forward(err) } } return nil }
// TODO: Implementar interfaces do msgpack. Testar boom com -c 4. E tentar encontrar leek no session func (r respErr) EncodeMsgpack(enc *msgpack.Encoder) error { if r.Err == nil { err := enc.Encode(util.ErrNil) if err != nil { return e.Forward(err) } return nil } err := enc.Encode(util.ErrOk) if err != nil { return e.Forward(err) } val := reflect.ValueOf(r.Err) err = util.MsgPackEncode(enc, val) if err != nil { return e.Forward(err) } return nil }