func (t *RpcResult) Read(decoder tl.Decoder, waitress tl.Waitress, session uuid.UUID) (err error) { t.ReqMsgId, err = decoder.ReadLong() if err != nil { return } var res_err, err_err error // try to get bare constructor from waitress // track to res_err if cons_id, _, _, res_err := waitress.GetResult(session, t.ReqMsgId); res_err == nil { result_box := &ObjectBox{} if res_err = result_box.Bind(cons_id); res_err == nil { t.Result, res_err = result_box.Bare() } } // Check for error if peek_cons_id, err_err := decoder.PeekType(); err_err == nil && peek_cons_id == TL_ID_RPC_ERROR { // got err - read it and return err_box := (&RpcError{}).Box() if err_err = err_box.Read(decoder, waitress, session); err_err == nil { if err_bare, err_err := err_box.Bare(); err_err == nil { t.RpcError = err_bare.(*RpcError) } } } if res_err == nil && err_err == nil && t.RpcError == nil { res_err = t.Result.Read(decoder, waitress, session) } // return one of res_err or err_err if res_err != nil { err = res_err } else if err_err != nil { err = err_err } return }
func (t *Long) Read(decoder tl.Decoder, waitress tl.Waitress, bind_uuid uuid.UUID) (err error) { t.value, err = decoder.ReadLong() return }