public static void AddLogItem(this ListBox listView, string message, SessionStatistics statistics) { var parameter = String.Format(ResourceManagerProvider.GetLocalizedString("LOG_STATISTICS", Application.CurrentCulture), statistics.ProcessedCount, statistics.ActivatedCount); listView.Items.Add(string.Format("{0:HH}:{0:mm}:{0:ss} - {1} {2}", DateTime.Now, message, parameter)); }
public void CalculatingStatistics() { var session = new Session(); var stats = new SessionStatistics() { HandsPlayed = 20, PreFlopRaises = 10, PreFlopRaiseWin = 5, ContinuationBets = 8, ContinuationBetsWin = 4 }; session.Statistics = stats; session.Statistics.Calculate(); Assert.AreEqual(50, session.Statistics.PreFlopRaisePercentage); Assert.AreEqual(50, session.Statistics.PreFlopRaiseWinPercentage); Assert.AreEqual(50, session.Statistics.ContinuationBetWinPercentage); }
public ActionResult GetStatistics(Guid sessionID) { var session = sessionRepository.GetById(sessionID); var stats = new SessionStatistics(); var playedHands = playedHandRepository.GetAllBySessionId(sessionID); var player1HandsWon = playedHands.Where(x => x.WinnerId == session.Player1Id); var player2HandsWon = playedHands.Where(x => x.WinnerId == session.Player2Id); int player1Sum = player1HandsWon.Sum(x => x.AmountWon); int player2Sum = player2HandsWon.Sum(x => x.AmountWon); int diff = player1Sum - player2Sum; if (diff > 0) { stats.Winner = session.PlayerEntity1.Name; } else { stats.Winner = session.PlayerEntity2.Name; } int diffAbs = Math.Abs(diff); stats.TotalAmountWon = diffAbs; stats.TotalBigBlindsWon = (decimal)diffAbs / HeadsupGame.BigBlindSize; stats.PlayedHandsCount = playedHands.Count(); foreach (GamePhase phase in Enum.GetValues(typeof(GamePhase))) { stats.StatisticsDetails.Add(GetStatsDetail(session.PlayerEntity1.Name, session.PlayerEntity2.Name, player1HandsWon, player2HandsWon, phase, stats.PlayedHandsCount)); } return(Json(stats, JsonRequestBehavior.AllowGet)); }
public TsunamiViewModel() { Settings.Logger.Inizialize(); _preference = new Models.Preferences(); _torrentList = new ObservableCollection <Models.TorrentItem>(); System.Windows.Data.BindingOperations.EnableCollectionSynchronization(TorrentList, _lock); _sessionStatistic = new SessionStatistics(); IsTsunamiEnabled = false; //_notifyIcon = new Models.NotifyIcon(); _torrentSession = new Core.Session(); CoreLog.Debug("created"); if (System.IO.File.Exists(".session_state")) { var data = System.IO.File.ReadAllBytes(".session_state"); using (var entry = Core.Util.lazy_bdecode(data)) { _torrentSession.load_state(entry); } } CoreLog.Debug("session_state loaded. pausing"); _torrentSession.pause(); Core.SessionSettings ss = _torrentSession.settings(); //ss.connections_limit = 500; // 200 //ss.tick_interval = 250; // 500 //ss.torrent_connect_boost = 20; // 10 //ss.connection_speed = -1; // -1 = 200 ; default 10 //ss.num_want = 400; // 200 //ss.cache_size = -1; // -1 = 1/8 RAM; default 1024 //ss.coalesce_reads = true; // false //ss.coalesce_writes = true; // false string ua = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Major.ToString() + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Minor.ToString() + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Build.ToString(); ss.user_agent = string.Format(Tsunami.Settings.Application.TSUNAMI_USER_AGENT, ua); log.Debug("using user agent {0}", ss.user_agent); // from qbit torrent ss.upnp_ignore_nonrouters = true; ss.use_dht_as_fallback = false; ss.ssl_listen = 0; // Disable support for SSL torrents for now ss.lazy_bitfields = true; // To prevent ISPs from blocking seeding ss.stop_tracker_timeout = 1; // Speed up exit ss.auto_scrape_interval = 1200; // 20 minutes ss.announce_to_all_trackers = true; // from pref->announceToAllTrackers(); ss.announce_to_all_tiers = true; // from pref->announceToAllTrackers(); ss.auto_scrape_min_interval = 900; // 15 minutes ss.cache_size = -1; ss.cache_expiry = 60; ss.disk_io_read_mode = 0; // enable_os_cache ss.anonymous_mode = false; ss.active_seeds = 3; // MaxActiveUploads ss.dont_count_slow_torrents = false; ss.active_downloads = 3; // MaxActiveDownloads + m_extraLimit ss.active_limit = 5; // MaxActiveTorrents + m_extraLimit ss.active_tracker_limit = -1; ss.active_dht_limit = -1; ss.active_lsd_limit = -1; ss.ignore_limits_on_local_network = true; // Ignore limits on LAN ss.rate_limit_ip_overhead = false; // Include overhead in transfer limits //ss.announce_ip = Utils::String::toStdString(pref->getNetworkAddress()); // IP address to announce to trackers ss.strict_super_seeding = false; // Super seeding ss.half_open_limit = 20; // * Max Half-open connections ss.connections_limit = 500; // * Max connections limit ss.unchoke_slots_limit = -1; // * Global max upload slots ss.enable_incoming_utp = true; // uTP ss.enable_outgoing_utp = true; // uTP ss.rate_limit_utp = true; // uTP rate limiting ss.mixed_mode_algorithm = 0; // prefer_tcp ss.connection_speed = 20; //default is 10 ss.no_connect_privileged_ports = false; ss.seed_choking_algorithm = 1; // fastest_upload ss.apply_ip_filter_to_trackers = false; // FilterTracker _torrentSession.set_settings(ss); // MISSING ENCRYPTION // libt::pe_settings encryptionSettings; (835 of session.cpp) Core.DhtSettings dhts = _torrentSession.get_dht_settings(); //dhts.aggressive_lookups = true; _torrentSession.set_dht_settings(dhts); var alertMask = Core.AlertMask.error_notification | Core.AlertMask.peer_notification | Core.AlertMask.port_mapping_notification | Core.AlertMask.storage_notification | Core.AlertMask.tracker_notification | Core.AlertMask.status_notification | Core.AlertMask.ip_block_notification | Core.AlertMask.progress_notification | Core.AlertMask.stats_notification | Core.AlertMask.dht_notification ; _torrentSession.set_alert_mask(alertMask); _torrentSession.set_alert_callback(HandlePendingAlertCallback); _torrentSession.set_session_callback(HandleAlertCallback); if (Settings.Application.DISPATCHER_INTERVAL < 500) { log.Warn("DISPATCHER_INTERVAL {0} should not be lower than 500", Settings.Application.DISPATCHER_INTERVAL); } _dispatcherTimer.Elapsed += new System.Timers.ElapsedEventHandler(dispatcherTimer_Tick); _dispatcherTimer.Interval = Settings.Application.DISPATCHER_INTERVAL; _dispatcherTimer.Start(); LoadFastResumeData(); _torrentSession.start_natpmp(); _torrentSession.start_upnp(); _torrentSession.start_dht(); _torrentSession.start_lsd(); _torrentSession.resume(); log.Info("created"); //Dht = new Core.AdunanzaDht(); //Dht.start(); //Dht.bootstrap("bootstrap.ring.cx", "4222"); }
private static void HandleSessionStart(string name, DateTime start) { currentStatistics = new SessionStatistics { Name = name, Start = start }; }
private static void HandleSessionStart(string name, DateTime start) { currentStatistics = new SessionStatistics {Name = name, Start = start}; }