private void LineSr_DataSqlUpdateSucceeded(eUpdateType eut, string sproviderdescription) { if (eut == eUpdateType.PreMatches) { FillMatches(); } }
void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription) { if (eut == eUpdateType.LiveBet) { Update(); } }
//public string ProviderTag { get; protected set; } public UpdatesLn(eUpdateType UpdateType, string sDescription, string sProviderDescription) { this.Modified = DateTime.Now; this.Description = sDescription; this.ProviderDescription = sProviderDescription; //this.ProviderTag = sProviderTag; }
private void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription) { if (ChangeTracker.CurrentMatch.VisibleBetDomainCount == 0) { ShowError(TranslationProvider.Translate(MultistringTags.TERMINAL_NO_BETDOMAINS).ToString(), null, true, 3); MyRegionManager.NavigatBack(RegionNames.ContentRegion); } }
private void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription) { if (ChangeTracker.CurrentMatch.VisibleBetDomainCount == 0) { LineSr.UnsubscribeFromEnent(DataCopy_DataSqlUpdateSucceeded); Mediator.SendMessage(true, MsgTag.NavigateBack); ShowError(TranslationProvider.Translate(MultistringTags.TERMINAL_NO_BETDOMAINS).ToString(), null, true, 3); } }
private void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription) { if (!StationRepository.IsLiveMatchEnabled) { LineSr.UnsubscribeFromEnent(DataCopy_DataSqlUpdateSucceeded); disabledLive = true; Mediator.SendMessage("", MsgTag.ShowFirstViewAndResetFilters); } if (eut == eUpdateType.LiveBet) { Update(); } }
public static void ProcessDataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription) { if (LineSr.DataSqlUpdateSucceeded != null) { try { LineSr.DataSqlUpdateSucceeded(eut, sProviderDescription); } catch (Exception excp) { m_logger.Excp(excp, "Event LineSr.ProcessDataSqlUpdateSucceeded(eUpdateType={0}, sProviderDescription='{1}')", eut, sProviderDescription); } } }
void DataCopy_DataSqlUpdateSucceeded(eUpdateType eut, string sProviderDescription) { SyncHashSet <ITipItemVw> shsToRemove = new SyncHashSet <ITipItemVw>(); var tipitems = new SortableObservableCollection <ITipItemVw>(); foreach (var ticket1 in TicketHandler.TicketsInBasket.ToSyncList()) { foreach (var tipItemVw in ticket1.TipItems.ToSyncList()) { tipitems.Add(tipItemVw); } } LineSr.VerifySelectedOdds(tipitems, shsToRemove); // remove hidden odds (disabled in web admin) and not caught by LineSr.VerifySelectedOdds() foreach (var ticket1 in TicketHandler.TicketsInBasket.ToSyncList()) { foreach (var tipItemVw in ticket1.TipItems.ToSyncList()) { if (tipItemVw.OddView.Visibility == Visibility.Hidden) { shsToRemove.Add(tipItemVw); } } } if (shsToRemove.Count > 0) { foreach (ITipItemVw tipItemVw in shsToRemove) { ShowError(TranslationProvider.Translate(MultistringTags.TERMINAL_REMOVE_FROM_BASKET_MATCH, tipItemVw.BetDomain.Match.MatchView.Name), null, false, 5); PlaceBetMethod(tipItemVw, true); } } var TicketsInBasket = TicketHandler.TicketsInBasket.ToSyncList(); foreach (var ticket1 in TicketsInBasket) { if (ticket1.TipItems.ToSyncList().Count == 0) { var ticket = ticket1; Dispatcher.Invoke(() => { TicketHandler.TicketsInBasket.Remove(ticket); }); } } TicketsInBasket = TicketHandler.TicketsInBasket.ToSyncList(); if (TicketsInBasket.Count() > 0) { TicketHandler.CopyValues(); } TicketHandler.UpdateTicket(); if (ChangeTracker.IsBasketOpen && TicketHandler.Count == 0 && !ChangeTracker.IsLandscapeMode) { Mediator.SendMessage("", MsgTag.ShowFirstViewAndResetFilters); } }
/// <summary> /// コルーチン一時停止 /// </summary> /// <param name="coroutine">実行するコルーチン</param> /// <param name="is_pause">true:一時停止. false:再開</param> /// <param name="type">更新タイプ</param> /// <returns></returns> public IEnumerator Begin(IEnumerator coroutine, bool is_pause, eUpdateType type = eUpdateType.Update) { return(Begin(coroutine, null)); }
/// <summary> /// コルーチン停止 /// </summary> /// <param name="routine">停止するコルーチン</param> /// <param name="type">更新タイプ</param> public void End(IEnumerator routine, eUpdateType type = eUpdateType.Update) { _consumers[(int)type].End(routine); }
/// <summary> /// コルーチン実行 /// </summary> /// <param name="coroutine">実行するコルーチン</param> /// <param name="game_object">紐づけるゲームオブジェクト</param> /// <param name="type">更新タイプ</param> /// <returns></returns> public IEnumerator Begin(IEnumerator coroutine, GameObject game_object, eUpdateType type = eUpdateType.Update) { return(_consumers[(int)type].Begin(coroutine, game_object)); }
/// <summary> /// コルーチン一時停止 /// </summary> /// <param name="coroutine">実行するコルーチン</param> /// <param name="is_pause">true:一時停止. false:再開</param> /// <param name="type">更新タイプ</param> /// <returns>成否</returns> public bool Pause(IEnumerator coroutine, bool is_pause, eUpdateType type = eUpdateType.Update) { return(_consumers[(int)type].Pause(coroutine, is_pause)); }
/* * private static bool DeleteMatches(IDbConnection conn, IDbTransaction transaction) * { * LineObjectCollection<MatchLn> locMatches = LineSr.Instance.ObjectsToRemove.GetLineObjectCollection<MatchLn>(); * * if (locMatches != null && locMatches.Count > 0) * { * IdentityList il = new IdentityList(); * * foreach (MatchLn mtch in locMatches.Values) * { * il.AddUnique(mtch.MatchId); * } * * string sMatchIds = il.FormatIds(); * * DataCopy.ExecuteScalar(conn, transaction, DELETE_MATCH_ODDS_QUERY, sMatchIds); * DataCopy.ExecuteScalar(conn, transaction, DELETE_MATCH_BETDOMAIN_QUERY, sMatchIds); * DataCopy.ExecuteScalar(conn, transaction, DELETE_MATCH_TO_GROUP_QUERY, sMatchIds); * DataCopy.ExecuteScalar(conn, transaction, DELETE_LIVE_MATCH_INFO_QUERY, sMatchIds); * DataCopy.ExecuteScalar(conn, transaction, DELETE_MATCHES_QUERY, sMatchIds); * * return true; * } * * return false; * } */ public static eFileSyncResult UpdateDatabase(IDbConnection conn, eUpdateType eut, string sProviderDescription, UpdateStatistics us) { eFileSyncResult fsr = eFileSyncResult.Failed; DateTime dtStart = DateTime.Now; string sErrorString = string.Empty; DataCopy dc = null; string sUpdateDescription = eut.ToString(); CheckTime ct = new CheckTime("UpdateAll({0}) Entered", sUpdateDescription); DictionaryOfLineObjectCollectionLight dlocToModify = LineSr.Instance.NewOrChangedObjects; DictionaryOfLineObjectCollectionLight dlocToDelete = LineSr.Instance.ObjectsToRemove; try { using (IDbTransaction transaction = conn.BeginTransaction()) { dc = new DataCopy(conn, transaction, sUpdateDescription); try { UpdatesLn updatesLn = new UpdatesLn(eut, string.Format("Saving {0} and Deleting {1} line tables", dlocToModify.Count, dlocToDelete.Count), sProviderDescription); updatesLn.Save(conn, transaction); Debug.Assert(updatesLn.UpdateId > 0); // Insert or Update objects dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <TaggedStringLn>(), TaggedStringLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <TimeTypeLn>(), TimeTypeLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <ScoreTypeLn>(), ScoreTypeLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <BetTypeLn>(), BetTypeLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <BetDomainTypeLn>(), BetDomainTypeLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <GroupLn>(), GroupLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <CompetitorLn>(), CompetitorLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MatchLn>(), MatchLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <CompetitorToOutrightLn>(), CompetitorToOutrightLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <LiveMatchInfoLn>(), LiveMatchInfoLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MatchResultLn>(), MatchResultLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MatchToGroupLn>(), MatchToGroupLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <BetDomainLn>(), BetDomainLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <ResourceRepositoryLn>(), ResourceRepositoryLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <ResourceAssignmentLn>(), ResourceAssignmentLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <CompetitorInfosLn>(), CompetitorInfosLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MatchInfosLn>(), MatchInfosLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <TournamentInfosLn>(), TournamentInfosLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <OddLn>(), OddLn.TableSpec, updatesLn); //dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection<LiabilityLn>(), LiabilityLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <LanguageLn>(), LanguageLn.TableSpec, updatesLn); dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection <MultistringGroupLn>(), MultistringGroupLn.TableSpec, updatesLn); //dc.InsertOrUpdate(dlocToModify.GetLineObjectCollection<TournamentMatchLocksLn>(), TournamentMatchLocksLn.TableSpec, updatesLn); // Delete Objects dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <OddLn>(), OddLn.TableSpec); dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <BetDomainLn>(), BetDomainLn.TableSpec); dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <MatchToGroupLn>(), MatchToGroupLn.TableSpec); dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <LiveMatchInfoLn>(), LiveMatchInfoLn.TableSpec); dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <CompetitorToOutrightLn>(), CompetitorToOutrightLn.TableSpec); dc.DeleteObjects(dlocToDelete.GetLineObjectCollection <MatchLn>(), MatchLn.TableSpec); if (dc.Statistics.IsInsrtedOrUpdatedOrDeleted) { // DK: If You like to test data import then uncomment line bellow: // throw new SystemException("Developer Exception: Always rollback transaction for test purposes"); transaction.Commit(); fsr = eFileSyncResult.Succeeded; ct.AddEvent("Commited"); } else { transaction.Rollback(); fsr = eFileSyncResult.Skipped; ct.AddEvent("Rolled Back"); } if (us != null) { us.Append(dc.Statistics); } } catch (Exception excp) { transaction.Rollback(); m_logger.Excp(excp, "UpdateAllWithSqlBulkCopy General Transaction Exception"); } finally { DateTime dtEnd = DateTime.Now; if (fsr != eFileSyncResult.Skipped) { // DK: Let's write to log ONLY Succeeded or Failed file syncrhonization info. string sInfo = @" {7} UpdateAllWithSqlBulkCopy({0}) {1} {2} {3} Start: {4}; End: {5}; Time: {6}; "; m_logger.InfoFormat( sInfo, // Format sProviderDescription, // Provider Description fsr, // Result sErrorString, // Errors if any dc.Statistics, // Statistic dtStart, dtEnd, dtEnd - dtStart, // Time sUpdateDescription); // LiveBet or PreMatch } else { m_logger.InfoFormat("{0} UpdateAllWithSqlBulkCopy Skipped. Time: {1}", sUpdateDescription, dtEnd - dtStart); } if (fsr == eFileSyncResult.Succeeded) { } ct.AddEvent("UpdateAll({0}) completed", sUpdateDescription); ct.Info(m_logger); } } // } } catch (Exception excp) { sErrorString += ExcpHelper.FormatException(excp, "UpdateAllWithSqlBulkCopy General Exception"); m_logger.Error(sErrorString, excp); } return(fsr); }
public static eFileSyncResult SyncRoutines(eUpdateType eut, string sProviderDescription, bool bUseDatabase, UpdateStatistics us, DelegateMerge dm) { Debug.Assert(dm != null); CheckTime ct = new CheckTime(true, "SyncRoutines(UseDatabase={0}) entered", bUseDatabase); /* * if (DalStationSettings.Instance.EnableRunProcessControl) * { * string sInfo = SystemControl.GetSystemInfo() + "\r\n" + ProcessControl.Current.ToDetailedString(); * m_logger.Info(sInfo); * #if DEBUG * m_logger.Info(ProcessControl.Current.GetThreadSummary()); #endif * * ct.AddEvent("Control completed"); * } */ try { eFileSyncResult fsr = eFileSyncResult.Failed; lock (m_oUpdateLocker) { ct.AddEvent("Inside of lock"); LineSr.Instance.NewOrChangedObjects.UnsetPropertiesChanged(); LineSr.Instance.NewOrChangedObjects.Clear(); bool bProcessUpdateSucceeded = false; lock (m_oReadLocker) { ct.AddEvent("Cache Update Started"); bProcessUpdateSucceeded = dm(null); ct.AddEvent("Cache Update Completed ({0}, {1})", LineSr.Instance.NewOrChangedObjects.Count, LineSr.Instance.ObjectsToRemove.Count); } if (bUseDatabase) { // We use database to store Live Data fsr = DataCopy.UpdateDatabase(ConnectionManager.GetConnection(), eut, sProviderDescription, us); ct.AddEvent("Database Update Completed"); if (fsr == eFileSyncResult.Succeeded) { LineSr.Instance.NewOrChangedObjects.NotifyPropertiesChanged(); DatabaseCache.Instance.AddNewObjectsAfterCommit(); DatabaseCache.Instance.RemoveObjectsAfterCommit(); LineSr.Instance.ObjectsToRemove.Clear(); ct.AddEvent("Routines Completed (fsr=Succeeded)"); } else { ct.AddEvent("Routines Completed (fsr=Skipped or Failed)"); } } else { // We DON'T use database to store Live Data fsr = eFileSyncResult.Succeeded; LineSr.Instance.NewOrChangedObjects.NotifyPropertiesChanged(); ct.AddEvent("Routines Completed"); } if (fsr == eFileSyncResult.Succeeded && bProcessUpdateSucceeded) { ct.AddEvent("ProcessDataSqlUpdateSucceeded() Completed"); } } return(fsr); } catch (Exception excp) { LineSr.Instance.ObjectsToRemove.Clear(); m_logger.Excp(excp, "SyncRoutines(eUpdateType={0}, sProviderDescription='{1}') ERROR", eut, sProviderDescription); ct.AddEvent("Exception Completed"); ct.Error(m_logger); } finally { ct.AddEvent("Completed"); ct.Info(m_logger); } return(eFileSyncResult.Failed); }