package de.uniluebeck.itm.wsn.drivers.mock; import com.google.common.util.concurrent.TimeLimiter; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; import de.uniluebeck.itm.wsn.drivers.core.operation.OperationListener; import de.uniluebeck.itm.wsn.drivers.core.operation.ResetOperation; import de.uniluebeck.itm.wsn.drivers.core.operation.TimeLimitedOperation; import de.uniluebeck.itm.wsn.drivers.core.serialport.SerialPortProgrammingMode; import javax.annotation.Nullable; /** * Mock operation for resetting the connection. * Internal the periodical sending of messages is reset. * * @author Malte Legenhausen * @author Daniel Bimschas */ public class MockResetOperation extends TimeLimitedOperation<Void> implements ResetOperation { private final MockDevice device; @Inject public MockResetOperation(final TimeLimiter timeLimiter, final MockDevice device, @Assisted final long timeoutMillis, @Assisted @Nullable final OperationListener<Void> operationCallback) { super(timeLimiter, timeoutMillis, operationCallback); this.device = device; } @Override @SerialPortProgrammingMode protected Void callInternal() throws Exception { Thread.sleep(100); progress(.3f); Thread.sleep(100); progress(.6f); device.reset(); progress(1f); return null; } }