Horizon

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 10  →  ?path2? @ 9
/Horizon/Database/SnapshotDatabase.cs
@@ -98,7 +98,6 @@
 
private readonly CancellationTokenSource _cancellationTokenSource;
private readonly SemaphoreSlim _databaseLock;
private readonly SQLiteConnectionStringBuilder _sqliteConnectionStringBuilder;
 
#endregion
 
@@ -109,11 +108,6 @@
Directory.CreateDirectory(Constants.DatabaseDirectory);
 
_databaseLock = new SemaphoreSlim(1, 1);
 
_sqliteConnectionStringBuilder = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
}
 
public SnapshotDatabase(CancellationToken cancellationToken) : this()
@@ -124,6 +118,8 @@
CancellationTokenSource.CreateLinkedTokenSource(localCancellationToken, cancellationToken);
_cancellationToken = combinedCancellationTokenSource.Token;
 
 
CreateDatabase(_cancellationToken).ContinueWith(async createDatabaseTask =>
{
try
@@ -134,14 +130,14 @@
{
await SetAutoVacuum(_cancellationToken);
}
catch (Exception exception)
catch(Exception exception)
{
Log.Error(exception, "Unable to set auto vacuum for database.");
Log.Error(exception,"Unable to set auto vacuum for database.");
}
}
catch (Exception exception)
{
Log.Error(exception, "Unable to create database;");
Log.Error(exception,"Unable to create database;");
}
}).Wait(_cancellationToken);
}
@@ -206,11 +202,16 @@
 
public async Task NormalizeTime(string hash, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection =
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -284,10 +285,15 @@
 
public async Task<long> CountSnapshots(CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -324,11 +330,16 @@
 
public async IAsyncEnumerable<Snapshot> LoadSnapshots([EnumeratorCancellation] CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection =
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -378,11 +389,16 @@
 
public async Task CreateSnapshot(string name, string path, Color color, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection =
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -521,11 +537,16 @@
public async Task CreateSnapshot(string name, string path,
Bitmap shot, Color color, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection =
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -694,10 +715,15 @@
 
public async Task SaveFile(string path, string hash, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -752,10 +778,15 @@
 
public async Task RevertFile(string name, string hash, CancellationToken cancellationToken, bool atomic = true)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -872,10 +903,15 @@
 
public async Task RemoveFileFast(IEnumerable<string> hashes, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -925,10 +961,14 @@
 
public async Task RemoveFile(string hash, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -969,11 +1009,16 @@
 
public async Task UpdateColor(string hash, Color color, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
 
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -1015,10 +1060,15 @@
 
public async Task RemoveColor(string hash, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -1059,10 +1109,15 @@
 
public async Task<SnapshotPreview> RetrievePreview(string hash, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -1120,10 +1175,15 @@
 
public async Task<MemoryStream> RetrieveFileStream(string hash, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -1179,10 +1239,15 @@
 
public async Task RelocateFile(string hash, string path, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -1225,10 +1290,15 @@
 
public async Task UpdateNote(string hash, string note, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -1274,12 +1344,17 @@
 
public async Task<string> UpdateFile(string hash, byte[] data, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var dataMemoryStream = new MemoryStream(data))
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -1394,10 +1469,15 @@
 
public async Task UpdateHash(string from, string to, CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -1443,11 +1523,16 @@
 
private async Task SetAutoVacuum(CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection =
new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);
 
@@ -1466,10 +1551,15 @@
 
private async Task CreateDatabase(CancellationToken cancellationToken)
{
var connectionString = new SQLiteConnectionStringBuilder
{
ConnectionString = DatabaseConnectionString
};
 
await _databaseLock.WaitAsync(cancellationToken);
try
{
using (var sqliteConnection = new SQLiteConnection(_sqliteConnectionStringBuilder.ConnectionString))
using (var sqliteConnection = new SQLiteConnection(connectionString.ConnectionString))
{
await sqliteConnection.OpenAsync(cancellationToken);