public SyncPool CreateSyncPool(IRestriction r) { SyncPool pool = new SyncPool(_serializer, _syncSerializer); foreach (Type t in _registeredTypes) { IList <ISerializableObject> list = _serializer.Connector.LoadList(t, r); foreach (ISerializableObject iso in list) { pool.AddISerializableObject(iso); } } pool.Intialize(); return(pool); }
//Vereinigung zweier SyncPools, diese müssen diesselben Serializer besitzen und initialisiert sein. internal SyncPool union(SyncPool s1, SyncPool s2) { //Kompatibilität testen try { if ((s1._serializer != s2._serializer) || (s1._syncSerializer != s2._syncSerializer)) { Exception ex = new Exception(); throw ex; } if (s1._initialized == false || s2._initialized == false) { Exception ex = new Exception(); throw ex; } } catch (Exception ex) { //Unterschiedliche Serializer, Vereinigung nicht möglich return(null); } SyncPool s = new SyncPool(s1._serializer, s1._syncSerializer); s._pooledObjects = new Dictionary <Guid, SyncContainer>(s1._pooledObjects);//Performanter als kopieren foreach (KeyValuePair <Guid, SyncContainer> kv in s2._pooledObjects) { if (s._pooledObjects.Contains(kv) == false) { s._pooledObjects.Add(kv.Key, kv.Value); } } //Initialisierung notwendig? Immerhin besteht der neue Syncpool nur aus initialisierten Synccontainern //Ist abhängig vom RelationResolver. Das heißt nur wenn neue Beziehungen aufgelöst werden müssen. s.Intialize(); return(s); }
public void Synchronize(SyncPool syncPool) { syncPool.StartSynchronizing(this); }
public void Analyze(SyncPool syncPool) { syncPool.StartAnalyzing(this); }