package com.tinkerpop.rexster.server;
import org.glassfish.grizzly.IOStrategy;
import org.glassfish.grizzly.strategies.LeaderFollowerNIOStrategy;
import org.glassfish.grizzly.strategies.SameThreadIOStrategy;
import org.glassfish.grizzly.strategies.SimpleDynamicNIOStrategy;
import org.glassfish.grizzly.strategies.WorkerThreadIOStrategy;
/**
* Creates various IOStrategy implementations for Grizzly. Defaults to leader-follower.
*
* http://grizzly.java.net/nonav/docs/docbkx2.0/html/iostrategies.html
*
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
public class GrizzlyIoStrategyFactory {
private static final String WORKER = "worker";
private static final String SAME = "same";
private static final String DYNAMIC = "dynamic";
private static final String LEADER_FOLLOWER = "leader-follower";
public static IOStrategy createIoStrategy(final String strategy) {
final IOStrategy ioStrategy;
if (strategy.equals(WORKER)) {
ioStrategy = WorkerThreadIOStrategy.getInstance();
} else if (strategy.equals(SAME)) {
ioStrategy = SameThreadIOStrategy.getInstance();
} else if (strategy.equals(DYNAMIC)) {
ioStrategy = SimpleDynamicNIOStrategy.getInstance();
} else if (strategy.equals(LEADER_FOLLOWER)) {
ioStrategy = LeaderFollowerNIOStrategy.getInstance();
} else {
ioStrategy = LeaderFollowerNIOStrategy.getInstance();
}
return ioStrategy;
}
}