package edu.sc.seis.sod.subsetter.channel;
import edu.iris.Fissures.IfNetwork.ChannelNotFound;
import edu.iris.Fissures.IfNetwork.Instrumentation;
import edu.iris.Fissures.IfNetwork.Response;
import edu.iris.Fissures.network.ChannelImpl;
import edu.sc.seis.fissuresUtil.cache.InstrumentationLoader;
import edu.sc.seis.fissuresUtil.sac.InvalidResponse;
import edu.sc.seis.sod.source.network.NetworkSource;
import edu.sc.seis.sod.status.Fail;
import edu.sc.seis.sod.status.StringTree;
public abstract class AbstractResponseSubsetter implements ChannelSubsetter {
public StringTree accept(ChannelImpl channel, NetworkSource network)
throws Exception {
Instrumentation instrumentation;
try {
instrumentation = network.getInstrumentation(channel);
InstrumentationLoader.checkResponse(instrumentation.the_response);
} catch (ChannelNotFound e) {
return new Fail(this, "No instrumentation");
} catch (InvalidResponse e) {
return new Fail(this, "Invalid response: "+e.getMessage());
}
return accept(instrumentation.the_response);
}
protected abstract StringTree accept(Response response);
}