Lots of symbol renaming.

This commit is contained in:
David Given
2025-10-14 22:32:42 +02:00
parent 2d6cb22e3a
commit d17f6116f0
22 changed files with 142 additions and 132 deletions

View File

@@ -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;

View File

@@ -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
{

View File

@@ -9,7 +9,7 @@
class ConfigProto;
class OptionProto;
class FluxSource;
class FluxSink;
class FluxSinkFactory;
class ImageReader;
class ImageWriter;
class Encoder;

View File

@@ -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));
}

View File

@@ -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));
}

View File

@@ -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));
}

View File

@@ -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>();
}
}

View File

@@ -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;

View File

@@ -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>();
}

View File

@@ -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));
}

View File

@@ -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));
}

View File

@@ -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);
}

View File

@@ -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);
};

View File

@@ -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
{

View File

@@ -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)

View File

@@ -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;
}

View File

@@ -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());

View File

@@ -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;

View File

@@ -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;

View File

@@ -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)

View File

@@ -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 (...)
{

View File

@@ -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))
{