mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
Refactor for better multi-read support. Each read is now held separately, with
F_DESYNC being deprecated, and FluxSource returns an iterator which can be used to retry reads.
This commit is contained in:
@@ -14,6 +14,15 @@ class KryofluxFluxSourceProto;
|
||||
class ScpFluxSourceProto;
|
||||
class TestPatternFluxSourceProto;
|
||||
|
||||
class FluxSourceIterator
|
||||
{
|
||||
public:
|
||||
virtual ~FluxSourceIterator() {}
|
||||
|
||||
virtual bool hasNext() const = 0;
|
||||
virtual std::unique_ptr<const Fluxmap> next() = 0;
|
||||
};
|
||||
|
||||
class FluxSource
|
||||
{
|
||||
public:
|
||||
@@ -33,9 +42,16 @@ public:
|
||||
static void updateConfigForFilename(FluxSourceProto* proto, const std::string& filename);
|
||||
|
||||
public:
|
||||
virtual std::unique_ptr<Fluxmap> readFlux(int track, int side) = 0;
|
||||
virtual std::unique_ptr<FluxSourceIterator> readFlux(int track, int side) = 0;
|
||||
virtual void recalibrate() {}
|
||||
virtual bool retryable() { return false; }
|
||||
virtual bool isHardware() { return false; }
|
||||
};
|
||||
|
||||
class TrivialFluxSource : public FluxSource
|
||||
{
|
||||
public:
|
||||
std::unique_ptr<FluxSourceIterator> readFlux(int track, int side);
|
||||
virtual std::unique_ptr<const Fluxmap> readSingleFlux(int track, int side) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user