void Handle(BaseMatchData matchData, MatchStateCallback callback, object matchState = null) { if (null == matchData || matchData.Home == null || matchData.Away == null) { matchData.ErrorCode = (int)MessageCode.NbParameterError; return; } HandleMatch(matchData, callback, matchState); }
public MessageCode CreateMatchAsyn(BaseMatchData stateObj, MatchStateCallback callback, object matchState = null) { if (null == stateObj || stateObj.Home == null || stateObj.Away == null) { return(MessageCode.MatchStateObjisNull); } stateObj.ErrorCode = (int)MessageCode.MatchWait; stateObj.RowTime = DateTime.Now; MemcachedFactory.MatchClient.Set <BaseMatchData>(stateObj.MatchId, stateObj); //_poolMatch.Add(() => Handle(stateObj,callback)); PushMatch(stateObj, callback, matchState); return(MessageCode.Success); }
void PushMatch(BaseMatchData matchData, MatchStateCallback callback, object matchState = null) { EnumMatchType castMatchType = EnumMatchType.None; switch ((EnumMatchType)matchData.MatchType) { case EnumMatchType.Tour: case EnumMatchType.TourElite: case EnumMatchType.WorldChallenge: castMatchType = EnumMatchType.Tour; break; case EnumMatchType.Ladder: case EnumMatchType.Dailycup: case EnumMatchType.League: case EnumMatchType.Champion: castMatchType = (EnumMatchType)matchData.MatchType; break; case EnumMatchType.Crowd: case EnumMatchType.CrossCrowd: case EnumMatchType.Peak: case EnumMatchType.CrossPeak: case EnumMatchType.GuildWar: castMatchType = EnumMatchType.Crowd; break; default: castMatchType = EnumMatchType.None; break; } NBThreadPool pool = null; if (!s_dicMatchPool.TryGetValue(castMatchType, out pool) || null == pool) { pool = _poolMatch; } pool.Add(() => Handle(matchData, callback, matchState)); }
void HandleMatch(BaseMatchData matchData, MatchStateCallback callback, object matchState = null) { MatchInput transferMatchEntity = null; try { transferMatchEntity = MatchTransferUtil.BuildTransferMatch(matchData); } catch (Exception ex) { SystemlogMgr.Error("MatchCore:HandleSingle-TransferMatchDataModel", string.Format("MatchType:{0}", matchData.MatchType), ex); matchData.ErrorCode = (int)MessageCode.MatchCreateFail; return; } if (null == transferMatchEntity || null == transferMatchEntity.HomeManager || null == transferMatchEntity.AwayManager) { matchData.ErrorCode = (int)MessageCode.MatchCreateFail; } else { byte[] process = null; try { if (matchData.Home.ManagerId == new Guid("BC214997-FB0B-41D3-A3AC-A58B00B092D8") || matchData.Away.ManagerId == new Guid("BC214997-FB0B-41D3-A3AC-A58B00B092D8")) { LogHelper.Insert("LeagueMatch Id1 " + matchData.MatchId, LogType.Info); } process = Exec(matchData, transferMatchEntity); } catch (Exception ex) { SystemlogMgr.Error("MatchCore:HandleSingle-Exec", ex); } if (matchData.ErrorCode == (int)MessageCode.Success && process != null) { try { MemcachedFactory.MatchClient.Set <BaseMatchData>(matchData.MatchId, matchData); if (!s_noCacheMatchTypes.ContainsKey((EnumMatchType)matchData.MatchType)) { MemcachedFactory.MatchProcessClient.Set <byte[]>(matchData.MatchId, process); } if (s_DbMatchTypes.ContainsKey((EnumMatchType)matchData.MatchType)) { MatchDataCore.Instance.SaveProcess(matchData.MatchId, matchData.MatchType, process, matchData.RowTime); } if (callback != null) { matchData.ErrorCode = (int)callback(matchData, matchState); if (matchData.ErrorCode != 0) { LogHelper.Insert(string.Format("match callback fail,matchId:{0},errorCode:{1},home:{2},away:{3}", matchData.MatchId, matchData.ErrorCode, matchData.Home.Name, matchData.Away.Name), LogType.Info); } } //MatchReward if (matchData.ErrorCode == 0 && ShareUtil.IsAppRXYC && CheckRewardMatchType(matchData.MatchType)) { Guid mid = (matchData.Home.IsNpc || matchData.Home.IsBot) ? matchData.Away.ManagerId : matchData.Home.ManagerId; string key = string.Concat(mid, ".", matchData.MatchType).ToLower(); var data = new DTOMatchRewardState() { MatchId = matchData.MatchId, Coin = -1, Point = -1 }; MemcachedFactory.MatchRewardClient.Set(key, data); } return; } catch (Exception ex) { SystemlogMgr.Error("MatchCore:HandleSingle-Save", ex); matchData.ErrorCode = (int)MessageCode.MatchCreateFail; } } else { matchData.ErrorCode = (int)MessageCode.MatchCreateFail; } } MemcachedFactory.MatchClient.Set <BaseMatchData>(matchData.MatchId, matchData); }