2using System.Threading.Tasks;
16 private static bool locked =
false;
40 if (!(provider is
null))
43 throw new Exception(
"A ledger provider is already registered.");
48 provider = LedgerProvider;
54 private static readonly ExternalEvents externalEvents =
new ExternalEvents();
58 public void RaiseEntryAdded(
object Object)
60 Ledger.RaiseEntryAdded(Object);
63 public void RaiseEntryDeleted(
object Object)
65 Ledger.RaiseEntryDeleted(Object);
68 public void RaiseEntryUpdated(
object Object)
70 Ledger.RaiseEntryUpdated(Object);
73 public void RaiseCollectionCleared(
string Collection)
75 Ledger.RaiseCollectionCleared(Collection);
86 if (!(provider is
null))
89 throw new Exception(
"A ledger provider has not been registered.");
121 RaiseEntryAdded(Object);
124 private static void RaiseEntryAdded(
object Object)
152 RaiseEntryUpdated(Object);
155 private static void RaiseEntryUpdated(
object Object)
183 RaiseEntryDeleted(Object);
186 private static void RaiseEntryDeleted(
object Object)
214 RaiseCollectionCleared(Collection);
217 private static async
void RaiseCollectionCleared(
string Collection)
253 public static Task<ILedgerEnumerator<object>>
GetEnumerator(
string CollectionName)
302 private static readonly
object listeningSynchObj =
new object();
303 private static int listeningCounter = 0;
312 lock (listeningSynchObj)
314 if (listeningCounter == 0)
316 Database.ObjectInserted += Database_ObjectInserted;
317 Database.ObjectUpdated += Database_ObjectUpdated;
318 Database.ObjectDeleted += Database_ObjectDeleted;
319 Database.CollectionCleared += Database_CollectionCleared;
334 lock (listeningSynchObj)
336 if (listeningCounter > 0)
340 if (listeningCounter == 0)
342 Database.ObjectInserted -= Database_ObjectInserted;
343 Database.ObjectUpdated -= Database_ObjectUpdated;
344 Database.ObjectDeleted -= Database_ObjectDeleted;
345 Database.CollectionCleared -= Database_CollectionCleared;
351 private static async
void Database_ObjectInserted(
object Sender,
ObjectEventArgs e)
364 private static async
void Database_ObjectUpdated(
object Sender,
ObjectEventArgs e)
377 private static async
void Database_ObjectDeleted(
object Sender,
ObjectEventArgs e)
Static class managing the application event log. Applications and services log events on this static ...
static void Exception(Exception Exception, string Object, string Actor, string EventId, EventLevel Level, string Facility, string Module, params KeyValuePair< string, object >[] Tags)
Logs an exception. Event type will be determined by the severity of the exception.
Event arguments for collection events.
string Collection
Collection
Static interface for database persistence. In order to work, a database provider has to be assigned t...
static Task< GenericObject > Generalize(object Object)
Creates a generalized representation of an object.
Contains basic ledger export restrictions.
Static interface for ledger persistence. In order to work, a ledger provider has to be assigned to it...
static ObjectEventHandler EntryAdded
Event raised when an entry has been added to the ledger.
static void Register(ILedgerProvider LedgerProvider)
Registers a ledger provider for use from the static Ledger class, throughout the lifetime of the appl...
static bool Locked
If the datbase provider has been locked for the rest of the run-time of the application.
static bool HasProvider
If a ledger provider is registered.
static ObjectEventHandler EntryUpdated
Event raised when an entry has been updated in the ledger.
static Task< bool > Export(ILedgerExport Output, LedgerExportRestriction Restriction)
Performs an export of the entire ledger.
static ObjectEventHandler EntryDeleted
Event raised when an entry has been deleted in the ledger.
static async Task DeletedEntry(object Object)
Deletes an entry in the ledger.
static ILedgerProvider Provider
Registered ledger provider.
static Task< string[]> GetCollections()
Gets an array of available collections.
static async Task NewEntry(object Object)
Adds an entry to the ledger.
static async Task ClearedCollection(string Collection)
Clears a collection in the ledger.
static Task< bool > Export(ILedgerExport Output, LedgerExportRestriction Restriction, ProfilerThread Thread)
Performs an export of the entire ledger.
static Task< bool > Export(ILedgerExport Output)
Performs an export of the entire ledger.
static async Task UpdatedEntry(object Object)
Updates an entry in the ledger.
static CollectionEventHandler CollectionCleared
Event raised when a collection has been cleared.
static Task< ILedgerEnumerator< T > > GetEnumerator< T >()
Gets an eumerator for objects of type T .
static void StartListeningToDatabaseEvents()
Makes the ledger listen on database events. Each call to StartListeningToDatabaseEvents must be follo...
static Task< ILedgerEnumerator< object > > GetEnumerator(string CollectionName)
Gets an eumerator for objects in a collection.
static void Register(ILedgerProvider LedgerProvider, bool Lock)
Registers a ledger provider for use from the static Ledger class, throughout the lifetime of the appl...
static void StopListeningToDatabaseEvents()
Makes the ledger listen on database events. Each call to StartListeningToDatabaseEvents must be follo...
Event arguments for database object events.
Generic object. Contains a sequence of properties.
Class that keeps track of events and timing for one thread.
Interface for proxy for reporting changes to the ledger from external sources.
Interface for ledger providers that can be plugged into the static Ledger class.
Task ClearedCollection(string Collection)
Clears a collection in the ledger.
Task DeletedEntry(object Object)
Deletes an entry in the ledger.
Task< string[]> GetCollections()
Gets an array of available collections.
Task< bool > Export(ILedgerExport Output, LedgerExportRestriction Restriction)
Performs an export of the entire ledger.
void Unregister(ILedgerExternalEvents ExternalEvents)
Unregisters a recipient of external events.
Task NewEntry(object Object)
Adds an entry to the ledger.
void Register(ILedgerExternalEvents ExternalEvents)
Registers a recipient of external events.
Task< ILedgerEnumerator< object > > GetEnumerator(string CollectionName)
Gets an eumerator for objects in a collection.
Task UpdatedEntry(object Object)
Updates an entry in the ledger.
Interface for ledger exports.
delegate void ObjectEventHandler(object Sender, ObjectEventArgs e)
Event handler for object events.
delegate Task CollectionEventHandler(object Sender, CollectionEventArgs e)
Event handler for collection events.