#ifndef SECTORINTERFACE_H #define SECTORINTERFACE_H class ImageReader; class ImageWriter; class Sector; class FluxSource; class FluxSink; class Decoder; class Encoder; class SectorInterface { public: virtual ~SectorInterface() {} public: virtual std::shared_ptr get( unsigned track, unsigned side, unsigned sectorId) = 0; virtual std::shared_ptr put( unsigned track, unsigned side, unsigned sectorId) = 0; virtual bool isReadOnly() { return true; } virtual bool needsFlushing() { return false; } virtual void flushChanges() {} virtual void discardChanges() {} public: static std::unique_ptr createImageSectorInterface( std::shared_ptr reader, std::shared_ptr writer); static std::unique_ptr createFluxSectorInterface( std::shared_ptr fluxSource, std::shared_ptr fluxSink, std::shared_ptr encoder, std::shared_ptr decoder); }; #endif