/**
* Replication Benchmarker
* https://github.com/score-team/replication-benchmarker/
* Copyright (C) 2013 LORIA / Inria / SCORE Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package jbenchmarker.factories;
import jbenchmarker.core.MergeAlgorithm;
import jbenchmarker.core.ReplicaFactory;
import jbenchmarker.ot.soct2.*;
import jbenchmarker.ot.ttf.MC.TTFUndoDocument;
import jbenchmarker.ot.ttf.MC.TTFUndoMergeAlgorithm;
import jbenchmarker.ot.ttf.MC.TTFUndoTransformations;
import jbenchmarker.ot.ttf.TTFDocument;
import jbenchmarker.ot.ttf.TTFMergeAlgorithm;
import jbenchmarker.ot.ttf.TTFOperation;
import jbenchmarker.ot.ttf.TTFTransformations;
/**
*
* @author oster
*/
public class TTFFactories {
static int nbrReplic = 4;
static TTFTransformations ttf = new TTFTransformations();
static public class WithoutGCFactory extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(siteId);
}
}
static public class WithGCBasic extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2(new SOCT2Log(ttf), new SOCT2GarbageCollector(nbrReplic)));
}
}
static public class WithGC3 extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2<TTFOperation>(new TTFTransformations(), siteId,
new SOCT2GarbageCollector(nbrReplic, 3)));
}
}
static public class WithGC10 extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2<TTFOperation>(new TTFTransformations(), siteId,
new SOCT2GarbageCollector(nbrReplic)));
}
}
static public class WithoutGCLL extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2(new SOCT2LogOptimizedLast(ttf), null));
}
}
static public class WithBasic_PGC extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2(new SOCT2Log(ttf),
new PreemptiveGarbageCollector(20)));
}
}
static public class WithLL_PGC extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2(new SOCT2LogOptimizedLast(ttf),
new PreemptiveGarbageCollector(20)));
}
}
static public class WithBasic_PGC_2 extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2(new SOCT2Log(ttf),
new PreemptiveGarbageCollector(50)));
}
}
static public class WithLL_PGC_2 extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2(new SOCT2LogOptimizedLast(ttf),
new PreemptiveGarbageCollector(50)));
}
}
static public class WithBasic_PGC_3 extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2(new SOCT2Log(ttf),
new PreemptiveGarbageCollector(100)));
}
}
static public class WithLL_PGC_3 extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFMergeAlgorithm(new TTFDocument(), 0,
new SOCT2(new SOCT2LogOptimizedLast(ttf),
new PreemptiveGarbageCollector(100)));
}
}
static public class Undo extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFUndoMergeAlgorithm(new TTFUndoDocument(), 0,
new SOCT2(new SOCT2Log(new TTFUndoTransformations()), null));
}
}
static public class UndoPGG extends ReplicaFactory {
@Override
public MergeAlgorithm create(int siteId) {
return new TTFUndoMergeAlgorithm(new TTFUndoDocument(), 0,
new SOCT2(new SOCT2Log(new TTFUndoTransformations()), new PreemptiveGarbageCollector(100)));
}
}
}