package org.briarproject.plugins.modem; import java.util.concurrent.Executor; import org.briarproject.api.TransportId; import org.briarproject.api.plugins.duplex.DuplexPlugin; import org.briarproject.api.plugins.duplex.DuplexPluginCallback; import org.briarproject.api.plugins.duplex.DuplexPluginFactory; import org.briarproject.api.reliability.ReliabilityLayerFactory; import org.briarproject.util.StringUtils; public class ModemPluginFactory implements DuplexPluginFactory { private static final int MAX_FRAME_LENGTH = 1024; private static final int MAX_LATENCY = 30 * 1000; // 30 seconds private final ModemFactory modemFactory; private final SerialPortList serialPortList; public ModemPluginFactory(Executor ioExecutor, ReliabilityLayerFactory reliabilityFactory) { modemFactory = new ModemFactoryImpl(ioExecutor, reliabilityFactory); serialPortList = new SerialPortListImpl(); } public TransportId getId() { return ModemPlugin.ID; } public DuplexPlugin createPlugin(DuplexPluginCallback callback) { // This plugin is not enabled by default String enabled = callback.getConfig().get("enabled"); if(StringUtils.isNullOrEmpty(enabled)) return null; return new ModemPlugin(modemFactory, serialPortList, callback, MAX_FRAME_LENGTH, MAX_LATENCY); } }