mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-24 11:11:02 -07:00
Lots of symbol renaming.
This commit is contained in:
@@ -410,7 +410,7 @@ static ReadGroupResult readGroup(const DiskLayout& diskLayout,
|
||||
|
||||
void writeTracks(const DiskLayout& diskLayout,
|
||||
|
||||
FluxSink& fluxSinkFactory,
|
||||
FluxSinkFactory& fluxSinkFactory,
|
||||
std::function<std::unique_ptr<const Fluxmap>(
|
||||
const std::shared_ptr<const LogicalTrackLayout>&)> producer,
|
||||
std::function<bool(const std::shared_ptr<const LogicalTrackLayout>&)>
|
||||
@@ -487,14 +487,14 @@ void writeTracks(const DiskLayout& diskLayout,
|
||||
}
|
||||
|
||||
void writeTracks(const DiskLayout& diskLayout,
|
||||
FluxSink& fluxSink,
|
||||
FluxSinkFactory& fluxSinkFactory,
|
||||
Encoder& encoder,
|
||||
const Image& image,
|
||||
const std::vector<CylinderHead>& chs)
|
||||
{
|
||||
writeTracks(
|
||||
diskLayout,
|
||||
fluxSink,
|
||||
fluxSinkFactory,
|
||||
[&](const std::shared_ptr<const LogicalTrackLayout>& ltl)
|
||||
{
|
||||
auto sectors = encoder.collectSectors(*ltl, image);
|
||||
@@ -508,7 +508,7 @@ void writeTracks(const DiskLayout& diskLayout,
|
||||
}
|
||||
|
||||
void writeTracksAndVerify(const DiskLayout& diskLayout,
|
||||
FluxSink& fluxSink,
|
||||
FluxSinkFactory& fluxSinkFactory,
|
||||
Encoder& encoder,
|
||||
FluxSource& fluxSource,
|
||||
Decoder& decoder,
|
||||
@@ -517,7 +517,7 @@ void writeTracksAndVerify(const DiskLayout& diskLayout,
|
||||
{
|
||||
writeTracks(
|
||||
diskLayout,
|
||||
fluxSink,
|
||||
fluxSinkFactory,
|
||||
[&](const std::shared_ptr<const LogicalTrackLayout>& ltl)
|
||||
{
|
||||
auto sectors = encoder.collectSectors(*ltl, image);
|
||||
@@ -578,7 +578,7 @@ void writeTracksAndVerify(const DiskLayout& diskLayout,
|
||||
void writeDiskCommand(const DiskLayout& diskLayout,
|
||||
const Image& image,
|
||||
Encoder& encoder,
|
||||
FluxSink& fluxSink,
|
||||
FluxSinkFactory& fluxSinkFactory,
|
||||
Decoder* decoder,
|
||||
FluxSource* fluxSource,
|
||||
const std::vector<CylinderHead>& physicalLocations)
|
||||
@@ -586,35 +586,41 @@ void writeDiskCommand(const DiskLayout& diskLayout,
|
||||
auto chs = std::ranges::views::keys(diskLayout.layoutByLogicalLocation) |
|
||||
std::ranges::to<std::vector>();
|
||||
if (fluxSource && decoder)
|
||||
writeTracksAndVerify(
|
||||
diskLayout, fluxSink, encoder, *fluxSource, *decoder, image, chs);
|
||||
writeTracksAndVerify(diskLayout,
|
||||
fluxSinkFactory,
|
||||
encoder,
|
||||
*fluxSource,
|
||||
*decoder,
|
||||
image,
|
||||
chs);
|
||||
else
|
||||
writeTracks(diskLayout, fluxSink, encoder, image, chs);
|
||||
writeTracks(diskLayout, fluxSinkFactory, encoder, image, chs);
|
||||
}
|
||||
|
||||
void writeDiskCommand(const DiskLayout& diskLayout,
|
||||
const Image& image,
|
||||
Encoder& encoder,
|
||||
FluxSink& fluxSink,
|
||||
FluxSinkFactory& fluxSinkFactory,
|
||||
Decoder* decoder,
|
||||
FluxSource* fluxSource)
|
||||
{
|
||||
writeDiskCommand(diskLayout,
|
||||
image,
|
||||
encoder,
|
||||
fluxSink,
|
||||
fluxSinkFactory,
|
||||
decoder,
|
||||
fluxSource,
|
||||
std::ranges::views::keys(diskLayout.layoutByLogicalLocation) |
|
||||
std::ranges::to<std::vector>());
|
||||
}
|
||||
|
||||
void writeRawDiskCommand(
|
||||
const DiskLayout& diskLayout, FluxSource& fluxSource, FluxSink& fluxSink)
|
||||
void writeRawDiskCommand(const DiskLayout& diskLayout,
|
||||
FluxSource& fluxSource,
|
||||
FluxSinkFactory& fluxSinkFactory)
|
||||
{
|
||||
writeTracks(
|
||||
diskLayout,
|
||||
fluxSink,
|
||||
fluxSinkFactory,
|
||||
[&](const std::shared_ptr<const LogicalTrackLayout>& ltl)
|
||||
{
|
||||
return fluxSource
|
||||
@@ -676,14 +682,14 @@ void readDiskCommand(const DiskLayout& diskLayout,
|
||||
Decoder& decoder,
|
||||
DecodedDisk& decodedDisk)
|
||||
{
|
||||
std::unique_ptr<FluxSink> outputFluxSinkFactory;
|
||||
std::unique_ptr<FluxSinkFactory> outputFluxSinkFactory;
|
||||
if (globalConfig()->decoder().has_copy_flux_to())
|
||||
outputFluxSinkFactory =
|
||||
FluxSink::create(globalConfig()->decoder().copy_flux_to());
|
||||
FluxSinkFactory::create(globalConfig()->decoder().copy_flux_to());
|
||||
|
||||
log(BeginOperationLogMessage{"Reading and decoding disk"});
|
||||
{
|
||||
std::unique_ptr<FluxSink::Sink> outputFluxSink;
|
||||
std::unique_ptr<FluxSink> outputFluxSink;
|
||||
if (outputFluxSinkFactory)
|
||||
outputFluxSink = outputFluxSinkFactory->create();
|
||||
unsigned index = 0;
|
||||
|
||||
@@ -8,7 +8,7 @@ class DecodedTrack;
|
||||
class Decoder;
|
||||
class DiskLayout;
|
||||
class Encoder;
|
||||
class FluxSink;
|
||||
class FluxSinkFactory;
|
||||
class FluxSource;
|
||||
class FluxSourceIteratorHolder;
|
||||
class Fluxmap;
|
||||
@@ -79,13 +79,13 @@ struct OperationProgressLogMessage
|
||||
extern void measureDiskRotation();
|
||||
|
||||
extern void writeTracks(const DiskLayout& diskLayout,
|
||||
FluxSink& fluxSink,
|
||||
FluxSinkFactory& fluxSinkFactory,
|
||||
const std::function<std::unique_ptr<const Fluxmap>(
|
||||
const LogicalTrackLayout& ltl)> producer,
|
||||
const std::vector<CylinderHead>& locations);
|
||||
|
||||
extern void writeTracksAndVerify(const DiskLayout& diskLayout,
|
||||
FluxSink& fluxSink,
|
||||
FluxSinkFactory& fluxSinkFactory,
|
||||
Encoder& encoder,
|
||||
FluxSource& fluxSource,
|
||||
Decoder& decoder,
|
||||
@@ -95,7 +95,7 @@ extern void writeTracksAndVerify(const DiskLayout& diskLayout,
|
||||
extern void writeDiskCommand(const DiskLayout& diskLayout,
|
||||
const Image& image,
|
||||
Encoder& encoder,
|
||||
FluxSink& fluxSink,
|
||||
FluxSinkFactory& fluxSinkFactory,
|
||||
Decoder* decoder,
|
||||
FluxSource* fluxSource,
|
||||
const std::vector<CylinderHead>& locations);
|
||||
@@ -103,12 +103,12 @@ extern void writeDiskCommand(const DiskLayout& diskLayout,
|
||||
extern void writeDiskCommand(const DiskLayout& diskLayout,
|
||||
const Image& image,
|
||||
Encoder& encoder,
|
||||
FluxSink& fluxSink,
|
||||
FluxSinkFactory& fluxSinkFactory,
|
||||
Decoder* decoder = nullptr,
|
||||
FluxSource* fluxSource = nullptr);
|
||||
|
||||
extern void writeRawDiskCommand(
|
||||
const DiskLayout& diskLayout, FluxSource& fluxSource, FluxSink& fluxSink);
|
||||
const DiskLayout& diskLayout, FluxSource& fluxSource, FluxSinkFactory& fluxSinkFactory);
|
||||
|
||||
struct TracksAndSectors
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
class ConfigProto;
|
||||
class OptionProto;
|
||||
class FluxSource;
|
||||
class FluxSink;
|
||||
class FluxSinkFactory;
|
||||
class ImageReader;
|
||||
class ImageWriter;
|
||||
class Encoder;
|
||||
|
||||
@@ -22,7 +22,7 @@ static uint32_t ticks_to_a2r(uint32_t ticks)
|
||||
return ticks * NS_PER_TICK / A2R_NS_PER_TICK;
|
||||
}
|
||||
|
||||
class A2RSink : public FluxSink::Sink
|
||||
class A2RSink : public FluxSink
|
||||
{
|
||||
public:
|
||||
A2RSink(const std::string& filename):
|
||||
@@ -231,12 +231,12 @@ private:
|
||||
int _maxCylinder;
|
||||
};
|
||||
|
||||
class A2RFluxSink : public FluxSink
|
||||
class A2RFluxSinkFactory : public FluxSinkFactory
|
||||
{
|
||||
public:
|
||||
A2RFluxSink(const A2RFluxSinkProto& lconfig): _config(lconfig) {}
|
||||
A2RFluxSinkFactory(const A2RFluxSinkProto& lconfig): _config(lconfig) {}
|
||||
|
||||
std::unique_ptr<Sink> create() override
|
||||
std::unique_ptr<FluxSink> create() override
|
||||
{
|
||||
return std::make_unique<A2RSink>(_config.filename());
|
||||
}
|
||||
@@ -255,8 +255,8 @@ private:
|
||||
const A2RFluxSinkProto& _config;
|
||||
};
|
||||
|
||||
std::unique_ptr<FluxSink> FluxSink::createA2RFluxSink(
|
||||
std::unique_ptr<FluxSinkFactory> FluxSinkFactory::createA2RFluxSinkFactory(
|
||||
const A2RFluxSinkProto& config)
|
||||
{
|
||||
return std::unique_ptr<FluxSink>(new A2RFluxSink(config));
|
||||
return std::unique_ptr<FluxSinkFactory>(new A2RFluxSinkFactory(config));
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
class AuSink : public FluxSink::Sink
|
||||
class AuSink : public FluxSink
|
||||
{
|
||||
public:
|
||||
AuSink(const std::string& directory, bool indexMarkers):
|
||||
@@ -89,12 +89,12 @@ private:
|
||||
bool _indexMarkers;
|
||||
};
|
||||
|
||||
class AuFluxSink : public FluxSink
|
||||
class AuFluxSinkFactory : public FluxSinkFactory
|
||||
{
|
||||
public:
|
||||
AuFluxSink(const AuFluxSinkProto& config): _config(config) {}
|
||||
AuFluxSinkFactory(const AuFluxSinkProto& config): _config(config) {}
|
||||
|
||||
std::unique_ptr<Sink> create() override
|
||||
std::unique_ptr<FluxSink> create() override
|
||||
{
|
||||
return std::make_unique<AuSink>(
|
||||
_config.directory(), _config.index_markers());
|
||||
@@ -114,8 +114,8 @@ private:
|
||||
const AuFluxSinkProto& _config;
|
||||
};
|
||||
|
||||
std::unique_ptr<FluxSink> FluxSink::createAuFluxSink(
|
||||
std::unique_ptr<FluxSinkFactory> FluxSinkFactory::createAuFluxSinkFactory(
|
||||
const AuFluxSinkProto& config)
|
||||
{
|
||||
return std::unique_ptr<FluxSink>(new AuFluxSink(config));
|
||||
return std::unique_ptr<FluxSinkFactory>(new AuFluxSinkFactory(config));
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <filesystem>
|
||||
|
||||
class Fl2Sink : public FluxSink::Sink
|
||||
class Fl2Sink : public FluxSink
|
||||
{
|
||||
public:
|
||||
Fl2Sink(const std::string& filename): _filename(filename)
|
||||
@@ -60,12 +60,12 @@ private:
|
||||
std::map<std::pair<unsigned, unsigned>, std::vector<Bytes>> _data;
|
||||
};
|
||||
|
||||
class Fl2FluxSink : public FluxSink
|
||||
class Fl2FluxSinkFactory : public FluxSinkFactory
|
||||
{
|
||||
public:
|
||||
Fl2FluxSink(const std::string& filename): _filename(filename) {}
|
||||
Fl2FluxSinkFactory(const std::string& filename): _filename(filename) {}
|
||||
|
||||
std::unique_ptr<Sink> create() override
|
||||
std::unique_ptr<FluxSink> create() override
|
||||
{
|
||||
return std::make_unique<Fl2Sink>(_filename);
|
||||
}
|
||||
@@ -85,14 +85,15 @@ private:
|
||||
const std::string _filename;
|
||||
};
|
||||
|
||||
std::unique_ptr<FluxSink> FluxSink::createFl2FluxSink(
|
||||
std::unique_ptr<FluxSinkFactory> FluxSinkFactory::createFl2FluxSinkFactory(
|
||||
const Fl2FluxSinkProto& config)
|
||||
{
|
||||
return std::unique_ptr<FluxSink>(new Fl2FluxSink(config.filename()));
|
||||
return std::unique_ptr<FluxSinkFactory>(
|
||||
new Fl2FluxSinkFactory(config.filename()));
|
||||
}
|
||||
|
||||
std::unique_ptr<FluxSink> FluxSink::createFl2FluxSink(
|
||||
std::unique_ptr<FluxSinkFactory> FluxSinkFactory::createFl2FluxSinkFactory(
|
||||
const std::string& filename)
|
||||
{
|
||||
return std::unique_ptr<FluxSink>(new Fl2FluxSink(filename));
|
||||
return std::unique_ptr<FluxSinkFactory>(new Fl2FluxSinkFactory(filename));
|
||||
}
|
||||
|
||||
@@ -7,36 +7,37 @@
|
||||
#include "lib/core/utils.h"
|
||||
#include <regex>
|
||||
|
||||
std::unique_ptr<FluxSink> FluxSink::create(Config& config)
|
||||
std::unique_ptr<FluxSinkFactory> FluxSinkFactory::create(Config& config)
|
||||
{
|
||||
if (!config.hasFluxSink())
|
||||
error("no flux sink configured");
|
||||
return create(config->flux_sink());
|
||||
}
|
||||
|
||||
std::unique_ptr<FluxSink> FluxSink::create(const FluxSinkProto& config)
|
||||
std::unique_ptr<FluxSinkFactory> FluxSinkFactory::create(
|
||||
const FluxSinkProto& config)
|
||||
{
|
||||
switch (config.type())
|
||||
{
|
||||
case FLUXTYPE_DRIVE:
|
||||
return createHardwareFluxSink(config.drive());
|
||||
return createHardwareFluxSinkFactory(config.drive());
|
||||
|
||||
case FLUXTYPE_A2R:
|
||||
return createA2RFluxSink(config.a2r());
|
||||
return createA2RFluxSinkFactory(config.a2r());
|
||||
|
||||
case FLUXTYPE_AU:
|
||||
return createAuFluxSink(config.au());
|
||||
return createAuFluxSinkFactory(config.au());
|
||||
|
||||
case FLUXTYPE_VCD:
|
||||
return createVcdFluxSink(config.vcd());
|
||||
return createVcdFluxSinkFactory(config.vcd());
|
||||
|
||||
case FLUXTYPE_SCP:
|
||||
return createScpFluxSink(config.scp());
|
||||
return createScpFluxSinkFactory(config.scp());
|
||||
|
||||
case FLUXTYPE_FLUX:
|
||||
return createFl2FluxSink(config.fl2());
|
||||
return createFl2FluxSinkFactory(config.fl2());
|
||||
|
||||
default:
|
||||
return std::unique_ptr<FluxSink>();
|
||||
return std::unique_ptr<FluxSinkFactory>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,48 +20,47 @@ class DecodedDisk;
|
||||
class FluxSink
|
||||
{
|
||||
public:
|
||||
FluxSink() {}
|
||||
virtual ~FluxSink() {}
|
||||
|
||||
static std::unique_ptr<FluxSink> createHardwareFluxSink(
|
||||
public:
|
||||
/* Writes a fluxmap to a track and side. */
|
||||
|
||||
virtual void addFlux(int track, int side, const Fluxmap& fluxmap) = 0;
|
||||
void addFlux(const CylinderHead& location, const Fluxmap& fluxmap)
|
||||
{
|
||||
addFlux(location.cylinder, location.head, fluxmap);
|
||||
}
|
||||
};
|
||||
|
||||
class FluxSinkFactory
|
||||
{
|
||||
public:
|
||||
virtual ~FluxSinkFactory() {}
|
||||
|
||||
static std::unique_ptr<FluxSinkFactory> createHardwareFluxSinkFactory(
|
||||
const HardwareFluxSinkProto& config);
|
||||
static std::unique_ptr<FluxSink> createAuFluxSink(
|
||||
static std::unique_ptr<FluxSinkFactory> createAuFluxSinkFactory(
|
||||
const AuFluxSinkProto& config);
|
||||
static std::unique_ptr<FluxSink> createA2RFluxSink(
|
||||
static std::unique_ptr<FluxSinkFactory> createA2RFluxSinkFactory(
|
||||
const A2RFluxSinkProto& config);
|
||||
static std::unique_ptr<FluxSink> createVcdFluxSink(
|
||||
static std::unique_ptr<FluxSinkFactory> createVcdFluxSinkFactory(
|
||||
const VcdFluxSinkProto& config);
|
||||
static std::unique_ptr<FluxSink> createScpFluxSink(
|
||||
static std::unique_ptr<FluxSinkFactory> createScpFluxSinkFactory(
|
||||
const ScpFluxSinkProto& config);
|
||||
static std::unique_ptr<FluxSink> createFl2FluxSink(
|
||||
static std::unique_ptr<FluxSinkFactory> createFl2FluxSinkFactory(
|
||||
const Fl2FluxSinkProto& config);
|
||||
|
||||
static std::unique_ptr<FluxSink> createFl2FluxSink(
|
||||
static std::unique_ptr<FluxSinkFactory> createFl2FluxSinkFactory(
|
||||
const std::string& filename);
|
||||
|
||||
static std::unique_ptr<FluxSink> create(Config& config);
|
||||
static std::unique_ptr<FluxSink> create(const FluxSinkProto& config);
|
||||
|
||||
public:
|
||||
class Sink
|
||||
{
|
||||
public:
|
||||
Sink() {}
|
||||
virtual ~Sink() {}
|
||||
|
||||
public:
|
||||
/* Writes a fluxmap to a track and side. */
|
||||
|
||||
virtual void addFlux(int track, int side, const Fluxmap& fluxmap) = 0;
|
||||
void addFlux(const CylinderHead& location, const Fluxmap& fluxmap)
|
||||
{
|
||||
addFlux(location.cylinder, location.head, fluxmap);
|
||||
}
|
||||
};
|
||||
static std::unique_ptr<FluxSinkFactory> create(Config& config);
|
||||
static std::unique_ptr<FluxSinkFactory> create(const FluxSinkProto& config);
|
||||
|
||||
public:
|
||||
/* Creates a writer object. */
|
||||
|
||||
virtual std::unique_ptr<Sink> create() = 0;
|
||||
virtual std::unique_ptr<FluxSink> create() = 0;
|
||||
|
||||
/* Returns whether this is writing to real hardware or not. */
|
||||
|
||||
@@ -81,7 +80,8 @@ public:
|
||||
virtual operator std::string() const = 0;
|
||||
};
|
||||
|
||||
inline std::ostream& operator<<(std::ostream& stream, FluxSink& flushSink)
|
||||
inline std::ostream& operator<<(
|
||||
std::ostream& stream, FluxSinkFactory& flushSink)
|
||||
{
|
||||
stream << (std::string)flushSink;
|
||||
return stream;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "lib/fluxsink/fluxsink.h"
|
||||
#include "lib/fluxsink/fluxsink.pb.h"
|
||||
|
||||
class HardwareSink : public FluxSink::Sink
|
||||
class HardwareSink : public FluxSink
|
||||
{
|
||||
void addFlux(int track, int side, const Fluxmap& fluxmap) override
|
||||
{
|
||||
@@ -21,10 +21,10 @@ class HardwareSink : public FluxSink::Sink
|
||||
}
|
||||
};
|
||||
|
||||
class HardwareFluxSink : public FluxSink
|
||||
class HardwareFluxSinkFactory : public FluxSinkFactory
|
||||
{
|
||||
public:
|
||||
std::unique_ptr<Sink> create() override
|
||||
std::unique_ptr<FluxSink> create() override
|
||||
{
|
||||
return std::make_unique<HardwareSink>();
|
||||
}
|
||||
@@ -40,8 +40,8 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
std::unique_ptr<FluxSink> FluxSink::createHardwareFluxSink(
|
||||
std::unique_ptr<FluxSinkFactory> FluxSinkFactory::createHardwareFluxSinkFactory(
|
||||
const HardwareFluxSinkProto& config)
|
||||
{
|
||||
return std::unique_ptr<FluxSink>();
|
||||
return std::unique_ptr<FluxSinkFactory>();
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ static void appendChecksum(uint32_t& checksum, const Bytes& bytes)
|
||||
checksum += br.read_8();
|
||||
}
|
||||
|
||||
class ScpSink : public FluxSink::Sink
|
||||
class ScpSink : public FluxSink
|
||||
{
|
||||
public:
|
||||
ScpSink(const std::string& filename, uint8_t typeByte, bool alignWithIndex):
|
||||
@@ -192,12 +192,12 @@ private:
|
||||
Bytes _trackdata;
|
||||
};
|
||||
|
||||
class ScpFluxSink : public FluxSink
|
||||
class ScpFluxSinkFactory : public FluxSinkFactory
|
||||
{
|
||||
public:
|
||||
ScpFluxSink(const ScpFluxSinkProto& lconfig): _config(lconfig) {}
|
||||
ScpFluxSinkFactory(const ScpFluxSinkProto& lconfig): _config(lconfig) {}
|
||||
|
||||
std::unique_ptr<Sink> create() override
|
||||
std::unique_ptr<FluxSink> create() override
|
||||
{
|
||||
return std::make_unique<ScpSink>(_config.filename(),
|
||||
_config.type_byte(),
|
||||
@@ -219,8 +219,8 @@ private:
|
||||
const ScpFluxSinkProto& _config;
|
||||
};
|
||||
|
||||
std::unique_ptr<FluxSink> FluxSink::createScpFluxSink(
|
||||
std::unique_ptr<FluxSinkFactory> FluxSinkFactory::createScpFluxSinkFactory(
|
||||
const ScpFluxSinkProto& config)
|
||||
{
|
||||
return std::unique_ptr<FluxSink>(new ScpFluxSink(config));
|
||||
return std::unique_ptr<FluxSinkFactory>(new ScpFluxSinkFactory(config));
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
class VcdSink : public FluxSink::Sink
|
||||
class VcdSink : public FluxSink
|
||||
{
|
||||
public:
|
||||
VcdSink(const std::string& directory): _directory(directory) {}
|
||||
@@ -66,12 +66,12 @@ private:
|
||||
const std::string _directory;
|
||||
};
|
||||
|
||||
class VcdFluxSink : public FluxSink
|
||||
class VcdFluxSinkFactory : public FluxSinkFactory
|
||||
{
|
||||
public:
|
||||
VcdFluxSink(const VcdFluxSinkProto& config): _config(config) {}
|
||||
VcdFluxSinkFactory(const VcdFluxSinkProto& config): _config(config) {}
|
||||
|
||||
std::unique_ptr<Sink> create() override
|
||||
std::unique_ptr<FluxSink> create() override
|
||||
{
|
||||
return std::make_unique<VcdSink>(_config.directory());
|
||||
}
|
||||
@@ -91,8 +91,8 @@ private:
|
||||
const VcdFluxSinkProto& _config;
|
||||
};
|
||||
|
||||
std::unique_ptr<FluxSink> FluxSink::createVcdFluxSink(
|
||||
std::unique_ptr<FluxSinkFactory> FluxSinkFactory::createVcdFluxSinkFactory(
|
||||
const VcdFluxSinkProto& config)
|
||||
{
|
||||
return std::unique_ptr<FluxSink>(new VcdFluxSink(config));
|
||||
return std::unique_ptr<FluxSinkFactory>(new VcdFluxSinkFactory(config));
|
||||
}
|
||||
|
||||
@@ -13,12 +13,12 @@ class FluxSectorInterface : public SectorInterface
|
||||
public:
|
||||
FluxSectorInterface(const std::shared_ptr<const DiskLayout>& diskLayout,
|
||||
std::shared_ptr<FluxSource> fluxSource,
|
||||
std::shared_ptr<FluxSink> fluxSink,
|
||||
std::shared_ptr<FluxSinkFactory> fluxSinkFactory,
|
||||
std::shared_ptr<Encoder> encoder,
|
||||
std::shared_ptr<Decoder> decoder):
|
||||
_diskLayout(diskLayout),
|
||||
_fluxSource(fluxSource),
|
||||
_fluxSink(fluxSink),
|
||||
_fluxSink(fluxSinkFactory),
|
||||
_encoder(encoder),
|
||||
_decoder(decoder)
|
||||
{
|
||||
@@ -143,7 +143,7 @@ private:
|
||||
|
||||
std::shared_ptr<const DiskLayout> _diskLayout;
|
||||
std::shared_ptr<FluxSource> _fluxSource;
|
||||
std::shared_ptr<FluxSink> _fluxSink;
|
||||
std::shared_ptr<FluxSinkFactory> _fluxSink;
|
||||
std::shared_ptr<Encoder> _encoder;
|
||||
std::shared_ptr<Decoder> _decoder;
|
||||
|
||||
@@ -157,10 +157,10 @@ private:
|
||||
std::unique_ptr<SectorInterface> SectorInterface::createFluxSectorInterface(
|
||||
const std::shared_ptr<const DiskLayout>& diskLayout,
|
||||
std::shared_ptr<FluxSource> fluxSource,
|
||||
std::shared_ptr<FluxSink> fluxSink,
|
||||
std::shared_ptr<FluxSinkFactory> fluxSinkFactory,
|
||||
std::shared_ptr<Encoder> encoder,
|
||||
std::shared_ptr<Decoder> decoder)
|
||||
{
|
||||
return std::make_unique<FluxSectorInterface>(
|
||||
diskLayout, fluxSource, fluxSink, encoder, decoder);
|
||||
diskLayout, fluxSource, fluxSinkFactory, encoder, decoder);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ class ImageReader;
|
||||
class ImageWriter;
|
||||
class Sector;
|
||||
class FluxSource;
|
||||
class FluxSink;
|
||||
class FluxSinkFactory;
|
||||
class Decoder;
|
||||
class DiskLayout;
|
||||
class Encoder;
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
static std::unique_ptr<SectorInterface> createFluxSectorInterface(
|
||||
const std::shared_ptr<const DiskLayout>& diskLayout,
|
||||
std::shared_ptr<FluxSource> fluxSource,
|
||||
std::shared_ptr<FluxSink> fluxSink,
|
||||
std::shared_ptr<FluxSinkFactory> fluxSinkFactory,
|
||||
std::shared_ptr<Encoder> encoder,
|
||||
std::shared_ptr<Decoder> decoder);
|
||||
};
|
||||
|
||||
@@ -234,7 +234,7 @@ std::unique_ptr<Filesystem> Filesystem::createFilesystemFromConfig()
|
||||
{
|
||||
std::shared_ptr<FluxSource> fluxSource;
|
||||
std::shared_ptr<Decoder> decoder;
|
||||
std::shared_ptr<FluxSink> fluxSink;
|
||||
std::shared_ptr<FluxSinkFactory> fluxSinkFactory;
|
||||
std::shared_ptr<Encoder> encoder;
|
||||
if (globalConfig().hasFluxSource())
|
||||
{
|
||||
@@ -243,11 +243,11 @@ std::unique_ptr<Filesystem> Filesystem::createFilesystemFromConfig()
|
||||
}
|
||||
if (globalConfig()->flux_sink().type() == FLUXTYPE_DRIVE)
|
||||
{
|
||||
fluxSink = FluxSink::create(globalConfig());
|
||||
fluxSinkFactory = FluxSinkFactory::create(globalConfig());
|
||||
encoder = Arch::createEncoder(globalConfig());
|
||||
}
|
||||
sectorInterface = SectorInterface::createFluxSectorInterface(
|
||||
diskLayout, fluxSource, fluxSink, encoder, decoder);
|
||||
diskLayout, fluxSource, fluxSinkFactory, encoder, decoder);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -53,7 +53,7 @@ int mainConvert(int argc, const char* argv[])
|
||||
minHead,
|
||||
maxHead);
|
||||
|
||||
auto fluxSinkFactory = FluxSink::create(globalConfig());
|
||||
auto fluxSinkFactory = FluxSinkFactory::create(globalConfig());
|
||||
auto fluxSink = fluxSinkFactory->create();
|
||||
|
||||
for (const auto& physicalLocation : diskLayout->physicalLocations)
|
||||
|
||||
@@ -51,9 +51,9 @@ int mainRawWrite(int argc, const char* argv[])
|
||||
error("you can't use rawwrite to read from hardware");
|
||||
|
||||
auto fluxSource = FluxSource::create(globalConfig());
|
||||
auto fluxSink = FluxSink::create(globalConfig());
|
||||
auto fluxSinkFactory = FluxSinkFactory::create(globalConfig());
|
||||
auto diskLayout = createDiskLayout(globalConfig());
|
||||
|
||||
writeRawDiskCommand(*diskLayout, *fluxSource, *fluxSink);
|
||||
writeRawDiskCommand(*diskLayout, *fluxSource, *fluxSinkFactory);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -57,11 +57,11 @@ int mainWrite(int argc, const char* argv[])
|
||||
|
||||
auto diskLayout = createDiskLayout();
|
||||
auto encoder = Arch::createEncoder(globalConfig());
|
||||
auto fluxSink = FluxSink::create(globalConfig());
|
||||
auto fluxSinkFactory = FluxSinkFactory::create(globalConfig());
|
||||
|
||||
std::shared_ptr<Decoder> decoder;
|
||||
std::shared_ptr<FluxSource> verificationFluxSource;
|
||||
if (globalConfig().hasDecoder() && fluxSink->isHardware() && verify)
|
||||
if (globalConfig().hasDecoder() && fluxSinkFactory->isHardware() && verify)
|
||||
{
|
||||
decoder = Arch::createDecoder(globalConfig());
|
||||
verificationFluxSource =
|
||||
@@ -71,7 +71,7 @@ int mainWrite(int argc, const char* argv[])
|
||||
writeDiskCommand(*diskLayout,
|
||||
*image,
|
||||
*encoder,
|
||||
*fluxSink,
|
||||
*fluxSinkFactory,
|
||||
decoder.get(),
|
||||
verificationFluxSource.get());
|
||||
|
||||
|
||||
@@ -34,11 +34,11 @@ namespace
|
||||
return _verificationFluxSource.get();
|
||||
}
|
||||
|
||||
FluxSink* GetFluxSink() override
|
||||
FluxSinkFactory* GetFluxSink() override
|
||||
{
|
||||
if (!_fluxSink)
|
||||
{
|
||||
_fluxSink = FluxSink::create(globalConfig());
|
||||
_fluxSink = FluxSinkFactory::create(globalConfig());
|
||||
}
|
||||
return _fluxSink.get();
|
||||
}
|
||||
@@ -82,7 +82,7 @@ namespace
|
||||
private:
|
||||
std::unique_ptr<FluxSource> _fluxSource;
|
||||
std::unique_ptr<FluxSource> _verificationFluxSource;
|
||||
std::unique_ptr<FluxSink> _fluxSink;
|
||||
std::unique_ptr<FluxSinkFactory> _fluxSink;
|
||||
std::unique_ptr<ImageReader> _imageReader;
|
||||
std::unique_ptr<ImageWriter> _imageWriter;
|
||||
std::unique_ptr<Encoder> _encoder;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
class FluxSource;
|
||||
class FluxSink;
|
||||
class FluxSinkFactory;
|
||||
class ImageReader;
|
||||
class ImageWriter;
|
||||
class Encoder;
|
||||
@@ -15,7 +15,7 @@ public:
|
||||
public:
|
||||
virtual FluxSource* GetFluxSource() = 0;
|
||||
virtual FluxSource* GetVerificationFluxSource() = 0;
|
||||
virtual FluxSink* GetFluxSink() = 0;
|
||||
virtual FluxSinkFactory* GetFluxSink() = 0;
|
||||
virtual ImageReader* GetImageReader() = 0;
|
||||
virtual ImageWriter* GetImageWriter() = 0;
|
||||
virtual Encoder* GetEncoder() = 0;
|
||||
|
||||
@@ -143,11 +143,12 @@ public:
|
||||
{
|
||||
auto image = GetContext().GetImageReader()->readImage();
|
||||
auto* encoder = GetContext().GetEncoder();
|
||||
auto* fluxSink = GetContext().GetFluxSink();
|
||||
auto* fluxSinkFactory = GetContext().GetFluxSink();
|
||||
|
||||
Decoder* decoder = nullptr;
|
||||
FluxSource* verificationFluxSource;
|
||||
if (globalConfig().hasDecoder() && fluxSink->isHardware())
|
||||
if (globalConfig().hasDecoder() &&
|
||||
fluxSinkFactory->isHardware())
|
||||
{
|
||||
decoder = GetContext().GetDecoder();
|
||||
verificationFluxSource =
|
||||
@@ -156,7 +157,7 @@ public:
|
||||
|
||||
writeDiskCommand(*image,
|
||||
*encoder,
|
||||
*fluxSink,
|
||||
*fluxSinkFactory,
|
||||
decoder,
|
||||
verificationFluxSource);
|
||||
});
|
||||
@@ -289,9 +290,9 @@ public:
|
||||
{
|
||||
auto fluxSource =
|
||||
FluxSource::createMemoryFluxSource(*_currentDisk);
|
||||
auto fluxSink =
|
||||
FluxSink::create(globalConfig()->flux_sink());
|
||||
writeRawDiskCommand(*fluxSource, *fluxSink);
|
||||
auto fluxSinkFactory =
|
||||
FluxSinkFactory::create(globalConfig()->flux_sink());
|
||||
writeRawDiskCommand(*fluxSource, *fluxSinkFactory);
|
||||
});
|
||||
}
|
||||
catch (const ErrorException& e)
|
||||
|
||||
@@ -570,18 +570,19 @@ void Datastore::beginWrite()
|
||||
wtRebuildConfiguration();
|
||||
wtWaitForUiThreadToCatchUp();
|
||||
|
||||
auto fluxSink = FluxSink::create(globalConfig());
|
||||
auto fluxSinkFactory = FluxSinkFactory::create(globalConfig());
|
||||
auto encoder = Arch::createEncoder(globalConfig());
|
||||
std::shared_ptr<Decoder> decoder;
|
||||
std::shared_ptr<FluxSource> verificationFluxSource;
|
||||
if (globalConfig().hasDecoder() && fluxSink->isHardware())
|
||||
if (globalConfig().hasDecoder() &&
|
||||
fluxSinkFactory->isHardware())
|
||||
{
|
||||
decoder = Arch::createDecoder(globalConfig());
|
||||
verificationFluxSource = FluxSource::create(
|
||||
globalConfig().getVerificationFluxSourceProto());
|
||||
}
|
||||
|
||||
auto path = fluxSink->getPath();
|
||||
auto path = fluxSinkFactory->getPath();
|
||||
if (path.has_value() && std::filesystem::exists(*path))
|
||||
{
|
||||
{
|
||||
@@ -608,7 +609,7 @@ void Datastore::beginWrite()
|
||||
writeDiskCommand(*diskLayout,
|
||||
*image,
|
||||
*encoder,
|
||||
*fluxSink,
|
||||
*fluxSinkFactory,
|
||||
decoder.get(),
|
||||
verificationFluxSource.get());
|
||||
}
|
||||
@@ -747,8 +748,8 @@ void Datastore::writeFluxFile(const std::fs::path& path)
|
||||
|
||||
globalConfig().setFluxSink(path.string());
|
||||
auto fluxSource = FluxSource::createMemoryFluxSource(*diskFlux);
|
||||
auto fluxSink = FluxSink::create(globalConfig());
|
||||
writeRawDiskCommand(*diskLayout, *fluxSource, *fluxSink);
|
||||
auto fluxSinkFactory = FluxSinkFactory::create(globalConfig());
|
||||
writeRawDiskCommand(*diskLayout, *fluxSource, *fluxSinkFactory);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
|
||||
@@ -271,7 +271,7 @@ int main(int argc, const char* argv[])
|
||||
int version = sqlGetVersion(db);
|
||||
|
||||
{
|
||||
auto fluxSink = FluxSink::createFl2FluxSink(outFilename)->create();
|
||||
auto fluxSink = FluxSinkFactory::createFl2FluxSinkFactory(outFilename)->create();
|
||||
|
||||
for (const auto& locations : sqlFindFlux(db))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user