private static void HandleReachabilitySwitch(string newReachabilityStatusString) { if (newReachabilityStatusString != lastReachabilityStatusString) { if (lastReachabilityStatusString == "None") { // (B) Reporting Gained (2) Breadcrumbs.LeaveReachabilityBreadcrumb( BreadcrumbReachabilityType.Gained, newReachabilityStatusString); } else if (newReachabilityStatusString == "None") { // (B) Reporting Lost (3) Breadcrumbs.LeaveReachabilityBreadcrumb( BreadcrumbReachabilityType.Lost, newReachabilityStatusString); } else { // (C) Reporting Switch (4) Breadcrumbs.LeaveReachabilityBreadcrumb( BreadcrumbReachabilityType.Switch, lastReachabilityStatusString, newReachabilityStatusString); }; lastReachabilityStatusString = newReachabilityStatusString; } ; }
/// <summary> /// Gets new session breadcrumbs. /// </summary> /// <returns> The breadcrumbs. </returns> private static Breadcrumbs SessionStart(string name, int maxCount) { Breadcrumbs answer = null; try { // Breadcrumbs answer has previous_session == the previous current_session // and new current_session == empty but for new session_start breadcrumb . string path = Path.Combine(StorageHelper.CrittercismPath(), name + ".js"); if (StorageHelper.FileExists(path)) { answer = StorageHelper.Load(path, typeof(Breadcrumbs)) as Breadcrumbs; } if (answer == null) { answer = new Breadcrumbs(name, maxCount); } answer.previous_session = answer.current_session; answer.current_session = new List <Breadcrumb>(); if (name == "UserBreadcrumbs") { Dictionary <string, Object> data = new Dictionary <string, Object>(); data["text"] = "session_start"; data["level"] = (int)BreadcrumbTextType.Normal; answer.current_session.Add(new Breadcrumb(BreadcrumbType.Text, data)); } } catch (Exception ie) { Crittercism.LogInternalException(ie); }; return(answer); }
internal Breadcrumbs Copy() { Breadcrumbs answer = new Breadcrumbs(name, maxCount); lock (this) { answer.current_session = new List <Breadcrumb>(current_session); answer.previous_session = new List <Breadcrumb>(previous_session); } return(answer); }
internal static Breadcrumbs SystemBreadcrumbs() { lock (lockObject) { if (systemBreadcrumbs == null) { const int maxSystemBreadcrumbsCount = 100; systemBreadcrumbs = SessionStart("SystemBreadcrumbs", maxSystemBreadcrumbsCount); } } return(systemBreadcrumbs); }
internal static Breadcrumbs NetworkBreadcrumbs() { lock (lockObject) { if (networkBreadcrumbs == null) { const int maxEndpointsCount = 10; networkBreadcrumbs = SessionStart("NetworkBreadcrumbs", maxEndpointsCount); } } return(networkBreadcrumbs); }
internal static Breadcrumbs UserBreadcrumbs() { lock (lockObject) { if (userBreadcrumbs == null) { const int maxUserBreadcrumbsCount = 100; userBreadcrumbs = SessionStart("UserBreadcrumbs", maxUserBreadcrumbsCount); } } return(userBreadcrumbs); }
internal static void HandleReachabilityUpDown(string newReachabilityStatusString) { // Checking IndexOf is zero allows "InternetAccess+WiFi" to also match. bool newInternetAccess = (newReachabilityStatusString.IndexOf("InternetAccess") == 0); bool lastInternetAccess = (lastReachabilityStatusString.IndexOf("InternetAccess") == 0); if (newInternetAccess != lastInternetAccess) { // (A) Reporting Up or Down (0 or 1) if (newInternetAccess) { Breadcrumbs.LeaveReachabilityBreadcrumb( BreadcrumbReachabilityType.Up); } else { Breadcrumbs.LeaveReachabilityBreadcrumb( BreadcrumbReachabilityType.Down); }; } ; }