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);
}