public override void OnLogLine(OnLogLineSource source, OnLogLineArgs args) { OABDownloadLogLine oabdownloadLogLine = (OABDownloadLogLine)args.LogLine; string organization = oabdownloadLogLine.Organization; DateTime d; DateTime dateTime; if (this.IsCustomerScenario(organization) && DateTime.TryParse(oabdownloadLogLine.LastRequestedTime, out d) && DateTime.TryParse(oabdownloadLogLine.LastTouchedTime, out dateTime)) { OABTenantInfo oabtenantInfo = this.tenantsOutOfSLA.Find((OABTenantInfo x) => x.Organization == organization); if (this.whiteListedTenantStatus.Contains(oabdownloadLogLine.OrgStatus) && d.AddDays((double)this.lastRequestedTimeThreshold) > DateTime.UtcNow && dateTime.AddHours((double)this.lastTouchedTimeThreshold) < DateTime.UtcNow && oabdownloadLogLine.Timestamp - d > TimeSpan.FromDays((double)this.staleRequestTimeThreshold) && !oabdownloadLogLine.IsAddressListDeleted) { if (oabtenantInfo == null) { oabtenantInfo = new OABTenantInfo(organization, oabdownloadLogLine, TimeSpan.FromHours((double)this.monitoringInterval)); this.tenantsOutOfSLA.Add(oabtenantInfo); } oabtenantInfo.NoOfRequests++; return; } if (oabtenantInfo != null) { this.tenantsOutOfSLA.Remove(oabtenantInfo); } } }
public OABTenantInfo(string organization, OABDownloadLogLine logline, TimeSpan monitoringInterval) { this.organization = organization; this.logLine = logline; this.monitoringInterval = monitoringInterval; }