public SyncMechanism(
ISituationDetection<AbstractFolderEvent> localSituation,
ISituationDetection<AbstractFolderEvent> remoteSituation,
ISyncEventQueue queue,
ISession session,
IMetaDataStorage storage,
IFileTransmissionStorage transmissionStorage,
ActivityListenerAggregator activityListener,
IFilterAggregator filters,
ISolver[,] solver = null) : base(queue)
{
if (session == null) {
throw new ArgumentNullException("session");
}
if (storage == null) {
throw new ArgumentNullException("storage");
}
if (transmissionStorage == null) {
throw new ArgumentNullException("transmissionStorage");
}
if (localSituation == null) {
throw new ArgumentNullException("localSituation");
}
if (remoteSituation == null) {
throw new ArgumentNullException("remoteSituation");
}
if (activityListener == null) {
throw new ArgumentNullException("activityListener");
}
if (filters == null) {
throw new ArgumentNullException("filters");
}
this.session = session;
this.storage = storage;
this.transmissionStorage = transmissionStorage;
this.LocalSituation = localSituation;
this.RemoteSituation = remoteSituation;
this.activityListener = activityListener;
this.filters = filters;
this.Solver = solver == null ? this.CreateSolver() : solver;
}