예제 #1
0
        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);
        }
예제 #2
0
        /// <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));
                }
            }
        }
예제 #3
0
 public PendingEvent(RaygunPulseEventType eventType, string name, long milliseconds, string sessionId)
 {
     _eventType = eventType;
       _name = name;
       _milliseconds = milliseconds;
       _timestamp = DateTime.UtcNow - TimeSpan.FromMilliseconds (milliseconds);
       _sessionId = sessionId;
 }
예제 #4
0
 public PendingEvent(RaygunPulseEventType eventType, string name, long milliseconds, string sessionId)
 {
     _eventType    = eventType;
     _name         = name;
     _milliseconds = milliseconds;
     _timestamp    = DateTime.UtcNow - TimeSpan.FromMilliseconds(milliseconds);
     _sessionId    = sessionId;
 }
예제 #5
0
        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);
        }
예제 #6
0
        /// <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));
            }
        }
예제 #7
0
        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);
        }
예제 #8
0
 internal void SendPulseTimingEventNow(RaygunPulseEventType eventType, string name, long milliseconds)
 {
     SendPulseTimingEventCore(eventType, name, milliseconds);
 }
예제 #9
0
 internal void SendPulseTimingEventNow(RaygunPulseEventType eventType, string name, long milliseconds)
 {
     SendPulseTimingEventCore(eventType, name, milliseconds);
 }
예제 #10
0
        /// <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));
              }
        }
예제 #11
0
        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);
        }
예제 #12
0
        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);
        }
예제 #13
0
 /// <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));
 }
예제 #14
0
 /// <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));
 }