private void SendPulseTimingEventCore(RaygunPulseEventType eventType, string name, long milliseconds) { EnsurePulseSessionStarted(); RaygunPulseMessage message = new RaygunPulseMessage(); RaygunPulseDataMessage dataMessage = new RaygunPulseDataMessage(); dataMessage.SessionId = _sessionId; dataMessage.Timestamp = DateTime.UtcNow - TimeSpan.FromMilliseconds((long)milliseconds); dataMessage.Version = GetVersion(); dataMessage.OS = "Android"; dataMessage.OSVersion = Android.OS.Build.VERSION.Release; dataMessage.Platform = string.Format("{0} {1}", Android.OS.Build.Manufacturer, Android.OS.Build.Model); dataMessage.Type = "mobile_event_timing"; dataMessage.User = UserInfo; string type = eventType == RaygunPulseEventType.ViewLoaded ? "p" : "n"; RaygunPulseData data = new RaygunPulseData() { Name = name, Timing = new RaygunPulseTimingMessage() { Type = type, Duration = milliseconds } }; RaygunPulseData[] dataArray = { data }; string dataStr = SimpleJson.SerializeObject(dataArray); dataMessage.Data = dataStr; message.EventData = new[] { dataMessage }; Send(message); }
/// <summary> /// Sends a pulse timing event to Raygun. The message is sent on a background thread. /// </summary> /// <param name="eventType">The type of event that occurred.</param> /// <param name="name">The name of the event resource such as the activity name or URL of a network call.</param> /// <param name="milliseconds">The duration of the event in milliseconds.</param> public void SendPulseTimingEvent(RaygunPulseEventType eventType, string name, long milliseconds) { lock (_batchLock) { try { if (_activeBatch == null) { _activeBatch = new PulseEventBatch(this); } if (_activeBatch != null && !_activeBatch.IsLocked) { EnsurePulseSessionStarted(); PendingEvent pendingEvent = new PendingEvent(eventType, name, milliseconds, _sessionId); _activeBatch.Add(pendingEvent); } else { ThreadPool.QueueUserWorkItem(c => SendPulseTimingEventCore(eventType, name, milliseconds)); } } catch (Exception e) { RaygunLogger.Error(string.Format("Error sending pulse timing event to Raygun: {0}", e.Message)); } } }
public PendingEvent(RaygunPulseEventType eventType, string name, long milliseconds, string sessionId) { _eventType = eventType; _name = name; _milliseconds = milliseconds; _timestamp = DateTime.UtcNow - TimeSpan.FromMilliseconds (milliseconds); _sessionId = sessionId; }
public PendingEvent(RaygunPulseEventType eventType, string name, long milliseconds, string sessionId) { _eventType = eventType; _name = name; _milliseconds = milliseconds; _timestamp = DateTime.UtcNow - TimeSpan.FromMilliseconds(milliseconds); _sessionId = sessionId; }
private void SendPulseTimingEventCore(RaygunPulseEventType eventType, string name, long milliseconds) { if (_sessionId == null) { SendPulseSessionEvent(RaygunPulseSessionEventType.SessionStart); } RaygunPulseMessage message = new RaygunPulseMessage(); RaygunPulseDataMessage dataMessage = new RaygunPulseDataMessage(); dataMessage.SessionId = _sessionId; dataMessage.Timestamp = DateTime.UtcNow - TimeSpan.FromMilliseconds(milliseconds); dataMessage.Version = GetVersion(); dataMessage.OS = UIDevice.CurrentDevice.SystemName; dataMessage.OSVersion = UIDevice.CurrentDevice.SystemVersion; dataMessage.Platform = Mindscape.Raygun4Net.Builders.RaygunEnvironmentMessageBuilder.GetStringSysCtl("hw.machine"); dataMessage.Type = "mobile_event_timing"; string machineName = null; try { machineName = UIDevice.CurrentDevice.Name; } catch (Exception e) { System.Diagnostics.Debug.WriteLine("Exception getting device name {0}", e.Message); } dataMessage.User = BuildRaygunIdentifierMessage(machineName); string type = eventType == RaygunPulseEventType.ViewLoaded ? "p" : "n"; RaygunPulseData data = new RaygunPulseData() { Name = name, Timing = new RaygunPulseTimingMessage() { Type = type, Duration = milliseconds } }; RaygunPulseData[] dataArray = { data }; string dataStr = SimpleJson.SerializeObject(dataArray); dataMessage.Data = dataStr; message.EventData = new [] { dataMessage }; Send(message); }
/// <summary> /// Sends a pulse timing event to Raygun. The message is sent on a background thread. /// </summary> /// <param name="eventType">The type of event that occurred.</param> /// <param name="name">The name of the event resource such as the view name or URL of a network call.</param> /// <param name="milliseconds">The duration of the event in milliseconds.</param> public void SendPulseTimingEvent(RaygunPulseEventType eventType, string name, long milliseconds) { if (_activeBatch == null) { _activeBatch = new PulseEventBatch(this); } if (_activeBatch != null && !_activeBatch.IsLocked) { if (_sessionId == null) { SendPulseSessionEvent(RaygunPulseSessionEventType.SessionStart); } PendingEvent pendingEvent = new PendingEvent(eventType, name, milliseconds, _sessionId); _activeBatch.Add(pendingEvent); } else { ThreadPool.QueueUserWorkItem(c => SendPulseTimingEventCore(eventType, name, milliseconds)); } }
private void SendPulseTimingEventCore(RaygunPulseEventType eventType, string name, long milliseconds) { EnsurePulseSessionStarted(); RaygunPulseMessage message = new RaygunPulseMessage(); RaygunPulseDataMessage dataMessage = new RaygunPulseDataMessage(); dataMessage.SessionId = _sessionId; dataMessage.Timestamp = DateTime.UtcNow - TimeSpan.FromMilliseconds(milliseconds); dataMessage.Version = GetVersion(); dataMessage.OS = UIDevice.CurrentDevice.SystemName; dataMessage.OSVersion = UIDevice.CurrentDevice.SystemVersion; dataMessage.Platform = Mindscape.Raygun4Net.Builders.RaygunEnvironmentMessageBuilder.GetStringSysCtl("hw.machine"); dataMessage.Type = "mobile_event_timing"; dataMessage.User = UserInfo; string type = eventType == RaygunPulseEventType.ViewLoaded ? "p" : "n"; RaygunPulseData data = new RaygunPulseData() { Name = name, Timing = new RaygunPulseTimingMessage() { Type = type, Duration = milliseconds } }; RaygunPulseData[] dataArray = { data }; string dataStr = SimpleJson.SerializeObject(dataArray); dataMessage.Data = dataStr; message.EventData = new[] { dataMessage }; Send(message); }
internal void SendPulseTimingEventNow(RaygunPulseEventType eventType, string name, long milliseconds) { SendPulseTimingEventCore(eventType, name, milliseconds); }
/// <summary> /// Sends a pulse timing event to Raygun. The message is sent on a background thread. /// </summary> /// <param name="eventType">The type of event that occurred.</param> /// <param name="name">The name of the event resource such as the view name or URL of a network call.</param> /// <param name="milliseconds">The duration of the event in milliseconds.</param> public void SendPulseTimingEvent(RaygunPulseEventType eventType, string name, long milliseconds) { if (_activeBatch == null) { _activeBatch = new PulseEventBatch (this); } if (_activeBatch != null && !_activeBatch.IsLocked) { if (_sessionId == null) { SendPulseSessionEvent (RaygunPulseSessionEventType.SessionStart); } PendingEvent pendingEvent = new PendingEvent (eventType, name, milliseconds, _sessionId); _activeBatch.Add (pendingEvent); } else { ThreadPool.QueueUserWorkItem (c => SendPulseTimingEventCore (eventType, name, milliseconds)); } }
private void SendPulseTimingEventCore(RaygunPulseEventType eventType, string name, long milliseconds) { if(_sessionId == null) { SendPulseSessionEvent(RaygunPulseSessionEventType.SessionStart); } RaygunPulseMessage message = new RaygunPulseMessage(); RaygunPulseDataMessage dataMessage = new RaygunPulseDataMessage(); dataMessage.SessionId = _sessionId; dataMessage.Timestamp = DateTime.UtcNow - TimeSpan.FromMilliseconds(milliseconds); dataMessage.Version = GetVersion(); dataMessage.OS = UIDevice.CurrentDevice.SystemName; dataMessage.OSVersion = UIDevice.CurrentDevice.SystemVersion; dataMessage.Platform = Mindscape.Raygun4Net.Builders.RaygunEnvironmentMessageBuilder.GetStringSysCtl("hw.machine"); dataMessage.Type = "mobile_event_timing"; string machineName = null; try { machineName = UIDevice.CurrentDevice.Name; } catch (Exception e) { System.Diagnostics.Debug.WriteLine("Exception getting device name {0}", e.Message); } dataMessage.User = BuildRaygunIdentifierMessage(machineName); string type = eventType == RaygunPulseEventType.ViewLoaded ? "p" : "n"; RaygunPulseData data = new RaygunPulseData(){ Name = name, Timing = new RaygunPulseTimingMessage() { Type = type, Duration = milliseconds } }; RaygunPulseData[] dataArray = { data }; string dataStr = SimpleJson.SerializeObject(dataArray); dataMessage.Data = dataStr; message.EventData = new [] { dataMessage }; Send(message); }
private void SendPulseTimingEventCore(RaygunPulseEventType eventType, string name, long milliseconds) { if (_sessionId == null) { SendPulseSessionEvent(RaygunPulseSessionEventType.SessionStart); } RaygunPulseMessage message = new RaygunPulseMessage(); RaygunPulseDataMessage dataMessage = new RaygunPulseDataMessage(); dataMessage.SessionId = _sessionId; dataMessage.Timestamp = DateTime.UtcNow - TimeSpan.FromMilliseconds((long)milliseconds); dataMessage.Version = GetVersion(); dataMessage.OS = "Android"; dataMessage.OSVersion = Android.OS.Build.VERSION.Release; dataMessage.Platform = string.Format("{0} {1}", Android.OS.Build.Manufacturer, Android.OS.Build.Model); dataMessage.Type = "mobile_event_timing"; dataMessage.User = UserInfo ?? (!String.IsNullOrEmpty(User) ? new RaygunIdentifierMessage(User) : BuildRaygunIdentifierMessage(null)); string type = eventType == RaygunPulseEventType.ViewLoaded ? "p" : "n"; RaygunPulseData data = new RaygunPulseData() { Name = name, Timing = new RaygunPulseTimingMessage() { Type = type, Duration = milliseconds } }; RaygunPulseData[] dataArray = { data }; string dataStr = SimpleJson.SerializeObject(dataArray); dataMessage.Data = dataStr; message.EventData = new[] { dataMessage }; Send(message); }
/// <summary> /// Sends a pulse timing event to Raygun. The message is sent on a background thread. /// </summary> /// <param name="eventType">The type of event that occurred.</param> /// <param name="name">The name of the event resource such as the activity name or URL of a network call.</param> /// <param name="milliseconds">The duration of the event in milliseconds.</param> public void SendPulseTimingEvent(RaygunPulseEventType eventType, string name, long milliseconds) { ThreadPool.QueueUserWorkItem(c => SendPulseTimingEventCore(eventType, name, milliseconds)); }