def _calc_drum_result(self, union_response, data, item, cost_gold, req, timer): union_res = internal_union_pb2.InternalDrumForUnionBattleRes() union_res.ParseFromString(union_response) if union_res.status != 0: raise Exception("Query union battle res error") res = union_battle_pb2.QueryUnionBattleRes() res.status = 0 res.ret = union_res.ret if union_res.ret == union_pb2.UNION_OK: score = union_res.individual_battle_score_add union_battle_business.drum(data, item, cost_gold, score, timer.now) if req.HasField("item"): compare.check_item(data, req.item) if union_res.HasField("battle"): defer = UnionBattlePatcher().patch(res.battle, union_res.battle, data, timer.now) defer.addCallback(self._calc_drum_post, data, req, res, timer) return defer return self._calc_drum_post(None, data, req, res, timer)
def _query_failed(self, err, req, timer): logger.fatal("Query union battle failed[reason=%s]" % err) res = union_battle_pb2.QueryUnionBattleRes() res.status = -1 response = res.SerializeToString() logger.notice("Query union battle failed" "[user_id=%d][req=%s][res=%s][consume=%d]" % (timer.id, req, res, timer.count_ms())) return response
def _calc_query_result(self, union_response, data, req, timer): union_res = internal_union_pb2.InternalQueryUnionBattleRes() union_res.ParseFromString(union_response) if union_res.status != 0: raise Exception("Query union battle res error") res = union_battle_pb2.QueryUnionBattleRes() res.status = 0 res.ret = union_res.ret if union_res.HasField("battle"): defer = UnionBattlePatcher().patch(res.battle, union_res.battle, data, timer.now) defer.addCallback(self._calc_query_post, data, req, res, timer) return defer return self._calc_query_post(None, data, req, res, timer)
def _calc_query(self, data, req, timer): union = data.union.get(True) if not union.is_belong_to_target_union(req.union_id): res = union_battle_pb2.QueryUnionBattleRes() res.status = 0 res.ret = union_pb2.UNION_NOT_MATCHED defer = DataBase().commit(data) defer.addCallback(self._query_succeed, req, res, timer) return defer union_req = internal_union_pb2.InternalQueryUnionBattleReq() union_req.user_id = data.id defer = GlobalObject().remote['gunion'].callRemote( "query_battle", req.union_id, union_req.SerializeToString()) defer.addCallback(self._calc_query_result, data, req, timer) return defer