/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.datasource.test;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.diirt.datasource.ChannelHandler;
import org.diirt.datasource.ChannelReadRecipe;
import org.diirt.datasource.ChannelWriteRecipe;
import org.diirt.datasource.DataSource;
import org.diirt.datasource.ExceptionHandler;
import org.diirt.datasource.ReadRecipe;
import org.diirt.datasource.WriteRecipe;
/**
*
* @author carcassi
*/
public class MockDataSource extends DataSource {
private final List<ChannelReadRecipe> connectedReadRecipes = new CopyOnWriteArrayList<>();
private final List<ChannelWriteRecipe> connectedWriteRecipes = new CopyOnWriteArrayList<>();
private volatile ReadRecipe readRecipe;
private volatile WriteRecipe writeRecipe;
private volatile WriteRecipe writeRecipeForWrite;
public MockDataSource() {
super(true);
}
@Override
protected ChannelHandler createChannel(String channelName) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void connectRead(ReadRecipe recipe) {
this.readRecipe = recipe;
connectedReadRecipes.addAll(recipe.getChannelReadRecipes());
}
@Override
public void disconnectRead(ReadRecipe recipe) {
this.readRecipe = recipe;
connectedReadRecipes.removeAll(recipe.getChannelReadRecipes());
}
@Override
public void connectWrite(WriteRecipe writeRecipe) {
this.writeRecipe = writeRecipe;
connectedWriteRecipes.addAll(writeRecipe.getChannelWriteRecipes());
}
@Override
public void disconnectWrite(WriteRecipe writeRecipe) {
this.writeRecipe = writeRecipe;
connectedWriteRecipes.removeAll(writeRecipe.getChannelWriteRecipes());
}
@Override
public void write(WriteRecipe writeRecipe, Runnable callback, ExceptionHandler exceptionHandler) {
this.writeRecipeForWrite = writeRecipe;
}
public ReadRecipe getReadRecipe() {
return readRecipe;
}
public WriteRecipe getWriteRecipe() {
return writeRecipe;
}
public WriteRecipe getWriteRecipeForWrite() {
return writeRecipeForWrite;
}
public List<ChannelReadRecipe> getConnectedReadRecipes() {
return connectedReadRecipes;
}
public List<ChannelWriteRecipe> getConnectedWriteRecipes() {
return connectedWriteRecipes;
}
}