Skip to content

Commit

Permalink
Added functions for provider resolution and updated open log effects
Browse files Browse the repository at this point in the history
  • Loading branch information
jschick04 authored and bill-long committed Nov 11, 2024
1 parent 8f3c1f2 commit ee9cdfa
Show file tree
Hide file tree
Showing 18 changed files with 1,597 additions and 743 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
// // Licensed under the MIT License.

using EventLogExpert.Eventing.EventProviderDatabase;
using EventLogExpert.Eventing.Models;
using EventLogExpert.Eventing.Providers;
using Microsoft.Extensions.Logging;
using System.Collections.Immutable;
using System.Text.RegularExpressions;
Expand All @@ -22,49 +24,54 @@ public EventProviderDatabaseEventResolver(IDatabaseCollectionProvider dbCollecti
LoadDatabases(dbCollection.ActiveDatabases);
}

//public void ResolveProviderDetails(EventRecord eventRecord, string owningLogName)
//{
// providerDetailsLock.EnterUpgradeableReadLock();

// try
// {
// if (providerDetails.ContainsKey(eventRecord.ProviderName))
// {
// return;
// }

// providerDetailsLock.EnterWriteLock();

// try
// {
// _databaseAccessSemaphore.Wait();

// foreach (var dbContext in _dbContexts)
// {
// var details = dbContext.ProviderDetails.FirstOrDefault(p => p.ProviderName.ToLower() == eventRecord.ProviderName.ToLower());

// if (details is null) { continue; }

// tracer($"Resolved {eventRecord.ProviderName} provider from database {dbContext.Name}.", LogLevel.Information);
// providerDetails.TryAdd(eventRecord.ProviderName, details);
// }
// }
// finally
// {
// _databaseAccessSemaphore.Release();
// providerDetailsLock.ExitWriteLock();
// }

// if (!providerDetails.ContainsKey(eventRecord.ProviderName))
// {
// providerDetails.TryAdd(eventRecord.ProviderName, new ProviderDetails { ProviderName = eventRecord.ProviderName });
// }
// }
// finally
// {
// providerDetailsLock.ExitUpgradeableReadLock();
// }
//}
public string GetXml(EventRecord eventRecord)
{
return string.Empty;
}

public void ResolveProviderDetails(EventRecord eventRecord, string owningLogName)
{
providerDetailsLock.EnterUpgradeableReadLock();

try
{
if (providerDetails.ContainsKey(eventRecord.ProviderName))
{
return;
}

providerDetailsLock.EnterWriteLock();

try
{
_databaseAccessSemaphore.Wait();

foreach (var dbContext in _dbContexts)
{
var details = dbContext.ProviderDetails.FirstOrDefault(p => p.ProviderName.ToLower() == eventRecord.ProviderName.ToLower());

if (details is null) { continue; }

tracer($"Resolved {eventRecord.ProviderName} provider from database {dbContext.Name}.", LogLevel.Information);
providerDetails.TryAdd(eventRecord.ProviderName, details);
}
}
finally
{
_databaseAccessSemaphore.Release();
providerDetailsLock.ExitWriteLock();
}

if (!providerDetails.ContainsKey(eventRecord.ProviderName))
{
providerDetails.TryAdd(eventRecord.ProviderName, new ProviderDetails { ProviderName = eventRecord.ProviderName });
}
}
finally
{
providerDetailsLock.ExitUpgradeableReadLock();
}
}

/// <summary>
/// If the database file name ends in a year or a number, such as Exchange 2019 or
Expand Down
Loading

0 comments on commit ee9cdfa

Please sign in to comment.