public static bool Initialize(ACR_ServerCommunicator Script, string ConnectionString, bool VerboseLogging)
{
if (Initialized)
return true;
try
{
StoreConnectionString = ConnectionString;
FileStoreProvider.DefaultVaultConnectionString = ConnectionString;
SynchronizeAccountFromVaultDelegate = new SynchronizeAccountFromVault(OnSynchronizeAccountFromVault);
SynchronizeAccountFromVaultHandle = GCHandle.Alloc(SynchronizeAccountFromVaultDelegate);
SynchronizeAccountFileToVaultDelegate = new SynchronizeAccountFileToVault(OnSynchronizeAccountFileToVault);
SynchronizeAccountFileToVaultHandle = GCHandle.Alloc(SynchronizeAccountFileToVaultDelegate);
try
{
if (SetStoragePluginCallbacks(Marshal.GetFunctionPointerForDelegate(SynchronizeAccountFromVaultDelegate),
Marshal.GetFunctionPointerForDelegate(SynchronizeAccountFileToVaultDelegate),
IntPtr.Zero) == 0)
{
throw new ApplicationException("Failed to install storage plugin callbacks.");
}
}
catch (Exception e)
{
Script.WriteTimestampedLogEntry(String.Format("ServerVaultConnector.Initialize: Exception: {0}", e));
SynchronizeAccountFileToVaultDelegate = null;
SynchronizeAccountFileToVaultHandle.Free();
SynchronizeAccountFromVaultDelegate = null;
SynchronizeAccountFromVaultHandle.Free();
throw;
}
}
catch
{
return false;
}
Initialized = true;
return true;
}