Beispiel #1
0
        internal ErrorReport(MSErrorReport msReport)
        {
            // If Id is not null we have loaded the report from the cache
            if (Id != null)
            {
                return;
            }

            Id           = msReport.IncidentIdentifier;
            AppStartTime = NSDateToDateTimeOffset(msReport.AppStartTime);
            AppErrorTime = NSDateToDateTimeOffset(msReport.AppErrorTime);
            Device       = msReport.Device == null ? null : new Device(msReport.Device);

            AndroidDetails = null;

            iOSDetails = new iOSErrorDetails(msReport.ReporterKey,
                                             msReport.Signal,
                                             msReport.ExceptionName,
                                             msReport.ExceptionReason,
                                             (uint)msReport.AppProcessIdentifier);

            MSWrapperException wrapperException = MSWrapperExceptionManager.LoadWrapperExceptionWithUUID(msReport.IncidentIdentifier);

            if (wrapperException != null && wrapperException.ExceptionData != null)
            {
                Exception = CrashesUtils.DeserializeException(wrapperException.ExceptionData.ToArray());
            }
        }
            public override NSArray AttachmentsWithCrashes(MSCrashes crashes, MSErrorReport msReport)
            {
                if (GetErrorAttachments == null)
                {
                    return(null);
                }
                var report      = new ErrorReport(msReport);
                var attachments = GetErrorAttachments(report);

                if (attachments != null)
                {
                    var nsArray = new NSMutableArray();
                    foreach (var attachment in attachments)
                    {
                        if (attachment != null)
                        {
                            nsArray.Add(attachment.internalAttachment);
                        }
                        else
                        {
                            AppCenterLog.Warn(LogTag, "Skipping null ErrorAttachmentLog in Crashes.GetErrorAttachments.");
                        }
                    }
                    return(nsArray);
                }
                return(null);
            }
            public override bool CrashesShouldProcessErrorReport(MSCrashes crashes, MSErrorReport msReport)
            {
                if (ShouldProcessErrorReport == null)
                {
                    return(true);
                }
                var report = new ErrorReport(msReport);

                return(ShouldProcessErrorReport(report));
            }
Beispiel #4
0
 public override void CrashesDidSucceedSendingErrorReport(MSCrashes crashes, MSErrorReport msReport)
 {
     if (_owner.SentErrorReport != null)
     {
         var report = ErrorReportCache.GetErrorReport(msReport);
         var e      = new SentErrorReportEventArgs();
         e.Report = report;
         _owner.SentErrorReport(null, e);
     }
 }
Beispiel #5
0
 public override void CrashesDidFailSendingErrorReport(MSCrashes crashes, MSErrorReport msReport, NSError error)
 {
     if (_owner.FailedToSendErrorReport != null)
     {
         var report = ErrorReportCache.GetErrorReport(msReport);
         var e      = new FailedToSendErrorReportEventArgs();
         e.Report    = report;
         e.Exception = error;
         _owner.FailedToSendErrorReport(null, e);
     }
 }
Beispiel #6
0
        public override bool CrashesShouldProcessErrorReport(MSCrashes crashes, MSErrorReport msReport)
        {
            if (_owner.ShouldProcessErrorReport == null)
            {
                return(true);
            }

            var report = ErrorReportCache.GetErrorReport(msReport);

            return(_owner.ShouldProcessErrorReport(report));
        }
 public override void CrashesWillSendErrorReport(MSCrashes crashes, MSErrorReport msReport)
 {
     if (SendingErrorReport != null)
     {
         var report = new ErrorReport(msReport);
         var e      = new SendingErrorReportEventArgs
         {
             Report = report
         };
         SendingErrorReport(null, e);
     }
 }
 public override void CrashesDidFailSendingErrorReport(MSCrashes crashes, MSErrorReport msReport, NSError error)
 {
     if (FailedToSendErrorReport != null)
     {
         var report = new ErrorReport(msReport);
         var e      = new FailedToSendErrorReportEventArgs
         {
             Report    = report,
             Exception = error
         };
         FailedToSendErrorReport(null, e);
     }
 }
Beispiel #9
0
        public override void CrashesWillSendErrorReport(MSCrashes crashes, MSErrorReport msReport)
        {
            if (_owner.SendingErrorReport == null)
            {
                return;
            }

            var report = ErrorReportCache.GetErrorReport(msReport);
            var e      = new SendingErrorReportEventArgs();

            e.Report = report;
            _owner.SendingErrorReport(null, e);
        }
        internal static ErrorReport GetErrorReport(MSErrorReport msReport)
        {
            ErrorReport cachedReport;

            if (cachedReports.TryGetValue(msReport.IncidentIdentifier, out cachedReport))
            {
                return(cachedReport);
            }

            var newErrorReport = new ErrorReport(msReport);

            cachedReports[msReport.IncidentIdentifier] = newErrorReport;
            return(newErrorReport);
        }
Beispiel #11
0
        public override MSErrorAttachment AttachmentWithCrashes(MSCrashes crashes, MSErrorReport msReport)
        {
            if (_owner.GetErrorAttachment == null)
            {
                return(null);
            }

            var             report     = ErrorReportCache.GetErrorReport(msReport);
            ErrorAttachment attachment = _owner.GetErrorAttachment(report);

            if (attachment != null)
            {
                return(attachment.internalAttachment);
            }

            return(null);
        }