diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-03 10:29:17 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-03 10:29:17 +0200 |
| commit | 05c7e42a8ce55a21c94338febad593bfbf638655 (patch) | |
| tree | 5465475f3565da1b724f4cd9bfcc0eb3b67fd167 /Software/Visual_Studio/Tango.Synchronization | |
| parent | 3a70d596ada24ad6f92f729d564ab29c3e249f06 (diff) | |
| download | Tango-05c7e42a8ce55a21c94338febad593bfbf638655.tar.gz Tango-05c7e42a8ce55a21c94338febad593bfbf638655.zip | |
MERGE
Diffstat (limited to 'Software/Visual_Studio/Tango.Synchronization')
4 files changed, 90 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs new file mode 100644 index 000000000..ca58686f3 --- /dev/null +++ b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.Synchronization.Local +{ + public class LocalDBSynchronizer + { + public static void Synchronize(String masterSQLiteFile, String slaveSQLiteFile) + { + using (LocalDBComparer comparer = new LocalDBComparer(new SQLiteDataBase(masterSQLiteFile), new SQLiteDataBase(slaveSQLiteFile))) + { + var diffs = comparer.Compare(); + foreach (var diff in diffs) + { + diff.Commit(); + } + } + } + + public static Task SynchronizeAsync(String masterSQLiteFile, String slaveSQLiteFile) + { + return Task.Factory.StartNew(() => Synchronize(masterSQLiteFile, slaveSQLiteFile)); + } + } +} diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs b/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs index 83a14b493..b3d259e8c 100644 --- a/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs +++ b/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs @@ -8,6 +8,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Threading; namespace Tango.Synchronization.Local { @@ -487,6 +488,24 @@ namespace Tango.Synchronization.Local public void Dispose() { _connection.Close(); + _connection.Dispose(); + GC.Collect(); + + while (true) + { + try + { + using (FileStream stream = File.Open(Source, FileMode.Open, FileAccess.Read)) + { + return; + } + } + catch (IOException) + { + GC.Collect(); + Thread.Sleep(200); + } + } } } } diff --git a/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs b/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs new file mode 100644 index 000000000..2cd9e2d41 --- /dev/null +++ b/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using remote = Tango.DAL.Remote.DB; +using local = Tango.DAL.Local.DB; + +namespace Tango.Synchronization.Remote +{ + public class RemoteDBSynchronizer + { + public static void Synchronize(String sqliteDbFile, String serialNumber) + { + using (var remoteDB = new remote.RemoteDB("LOCALHOST\\SQLEXPRESS", false)) + { + using (var localDB = new local.LocalDB(sqliteDbFile)) + { + RemoteDBComparer comparer = new RemoteDBComparer(remoteDB, localDB, serialNumber); + var diffs = comparer.Compare(); + + foreach (var diff in diffs) + { + diff.Commit(); + } + + remoteDB.SaveChanges(); + localDB.SaveChanges(); + } + } + } + + public static Task SynchronizeAsync(String sqliteDBFile, String serialNumber) + { + return Task.Factory.StartNew(() => + { + Synchronize(sqliteDBFile, serialNumber); + }); + } + } +} diff --git a/Software/Visual_Studio/Tango.Synchronization/Tango.Synchronization.csproj b/Software/Visual_Studio/Tango.Synchronization/Tango.Synchronization.csproj index 36719516a..30208539c 100644 --- a/Software/Visual_Studio/Tango.Synchronization/Tango.Synchronization.csproj +++ b/Software/Visual_Studio/Tango.Synchronization/Tango.Synchronization.csproj @@ -69,12 +69,14 @@ <Compile Include="Local\Constants.cs" /> <Compile Include="Local\ExtensionMethods.cs" /> <Compile Include="Local\ILocalDataBase.cs" /> + <Compile Include="Local\LocalDBSynchronizer.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Local\LocalDBComparer.cs" /> <Compile Include="Diff.cs" /> <Compile Include="DiffAction.cs" /> <Compile Include="Local\SQLiteDataBase.cs" /> <Compile Include="Remote\RemoteDBComparer.cs" /> + <Compile Include="Remote\RemoteDBSynchronizer.cs" /> <Compile Include="SyncConfiguration.cs" /> </ItemGroup> <ItemGroup> |
