private void SendCore(PulseEventBatch batch)
{
if (_sessionId == null) {
SendPulseSessionEvent (RaygunPulseSessionEventType.SessionStart);
}
string version = GetVersion ();
string os = UIDevice.CurrentDevice.SystemName;
string osVersion = UIDevice.CurrentDevice.SystemVersion;
string platform = Mindscape.Raygun4Net.Builders.RaygunEnvironmentMessageBuilder.GetStringSysCtl ("hw.machine");
string machineName = null;
try {
machineName = UIDevice.CurrentDevice.Name;
} catch (Exception e) {
System.Diagnostics.Debug.WriteLine ("Exception getting device name {0}", e.Message);
}
RaygunIdentifierMessage user = BuildRaygunIdentifierMessage (machineName);
RaygunPulseMessage message = new RaygunPulseMessage ();
Debug.WriteLine ("BatchSize: " + batch.PendingEventCount);
RaygunPulseDataMessage [] eventMessages = new RaygunPulseDataMessage[batch.PendingEventCount];
int index = 0;
foreach (PendingEvent pendingEvent in batch.PendingEvents) {
RaygunPulseDataMessage dataMessage = new RaygunPulseDataMessage ();
dataMessage.SessionId = pendingEvent.SessionId;
dataMessage.Timestamp = pendingEvent.Timestamp;
dataMessage.Version = version;
dataMessage.OS = os;
dataMessage.OSVersion = osVersion;
dataMessage.Platform = platform;
dataMessage.Type = "mobile_event_timing";
dataMessage.User = user;
string type = pendingEvent.EventType == RaygunPulseEventType.ViewLoaded ? "p" : "n";
RaygunPulseData data = new RaygunPulseData () { Name = pendingEvent.Name, Timing = new RaygunPulseTimingMessage () { Type = type, Duration = pendingEvent.Duration } };
RaygunPulseData [] dataArray = { data };
string dataStr = SimpleJson.SerializeObject (dataArray);
dataMessage.Data = dataStr;
eventMessages [index] = dataMessage;
index++;
}
message.EventData = eventMessages;
Send (message);
}