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)
132 public static event EventHandler<ObjectEventArgs>
EntryAdded =
null;
141 RaiseEntryUpdated(Object);
144 private static void RaiseEntryUpdated(
object Object)
161 RaiseEntryDeleted(Object);
164 private static void RaiseEntryDeleted(
object Object)
181 RaiseCollectionCleared(Collection);
184 private static async
void RaiseCollectionCleared(
string Collection)
216 public static Task<ILedgerEnumerator<object>>
GetEnumerator(
string CollectionName)
265 private static readonly
object listeningSynchObj =
new object();
266 private static int listeningCounter = 0;
275 lock (listeningSynchObj)
277 if (listeningCounter == 0)
279 Database.ObjectInserted += Database_ObjectInserted;
280 Database.ObjectUpdated += Database_ObjectUpdated;
281 Database.ObjectDeleted += Database_ObjectDeleted;
282 Database.CollectionCleared += Database_CollectionCleared;
297 lock (listeningSynchObj)
299 if (listeningCounter > 0)
303 if (listeningCounter == 0)
305 Database.ObjectInserted -= Database_ObjectInserted;
306 Database.ObjectUpdated -= Database_ObjectUpdated;
307 Database.ObjectDeleted -= Database_ObjectDeleted;
308 Database.CollectionCleared -= Database_CollectionCleared;
314 private static async
void Database_ObjectInserted(
object Sender,
ObjectEventArgs e)
327 private static async
void Database_ObjectUpdated(
object Sender,
ObjectEventArgs e)
340 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 EventHandler< ObjectEventArgs > EntryUpdated
Event raised when an entry has been updated in the ledger.
static EventHandlerAsync< CollectionEventArgs > CollectionCleared
Event raised when a collection has been cleared.
static void Register(ILedgerProvider LedgerProvider)
Registers a ledger provider for use from the static Ledger class, throughout the lifetime of the appl...
static EventHandler< ObjectEventArgs > EntryDeleted
Event raised when an entry has been deleted in the ledger.
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 Task< bool > Export(ILedgerExport Output, LedgerExportRestriction Restriction)
Performs an export of the entire 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 EventHandler< ObjectEventArgs > EntryAdded
Event raised when an entry has been added to the ledger.
static async Task UpdatedEntry(object Object)
Updates an entry in the ledger.
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.