mirror of
				https://github.com/davidgiven/fluxengine.git
				synced 2025-10-24 11:11:02 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			134 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef WRITER_H
 | |
| #define WRITER_H
 | |
| 
 | |
| #include "lib/data/locations.h"
 | |
| 
 | |
| class Disk;
 | |
| class Track;
 | |
| class Decoder;
 | |
| class DiskLayout;
 | |
| class Encoder;
 | |
| class FluxSinkFactory;
 | |
| class FluxSource;
 | |
| class FluxSourceIteratorHolder;
 | |
| class Fluxmap;
 | |
| class Image;
 | |
| class ImageReader;
 | |
| class ImageWriter;
 | |
| class LogicalTrackLayout;
 | |
| class PhysicalTrackLayout;
 | |
| class Sector;
 | |
| 
 | |
| struct BeginSpeedOperationLogMessage
 | |
| {
 | |
| };
 | |
| 
 | |
| struct EndSpeedOperationLogMessage
 | |
| {
 | |
|     nanoseconds_t rotationalPeriod;
 | |
| };
 | |
| 
 | |
| struct TrackReadLogMessage
 | |
| {
 | |
|     std::vector<std::shared_ptr<const Track>> tracks;
 | |
|     std::vector<std::shared_ptr<const Sector>> sectors;
 | |
| };
 | |
| 
 | |
| struct DiskReadLogMessage
 | |
| {
 | |
|     std::shared_ptr<const Disk> disk;
 | |
| };
 | |
| 
 | |
| struct BeginReadOperationLogMessage
 | |
| {
 | |
|     unsigned track;
 | |
|     unsigned head;
 | |
| };
 | |
| 
 | |
| struct EndReadOperationLogMessage
 | |
| {
 | |
|     std::shared_ptr<const Track> trackDataFlux;
 | |
|     std::set<std::shared_ptr<const Sector>> sectors;
 | |
| };
 | |
| 
 | |
| struct BeginWriteOperationLogMessage
 | |
| {
 | |
|     unsigned track;
 | |
|     unsigned head;
 | |
| };
 | |
| 
 | |
| struct EndWriteOperationLogMessage
 | |
| {
 | |
| };
 | |
| 
 | |
| struct BeginOperationLogMessage
 | |
| {
 | |
|     std::string message;
 | |
| };
 | |
| 
 | |
| struct EndOperationLogMessage
 | |
| {
 | |
|     std::string message;
 | |
| };
 | |
| 
 | |
| struct OperationProgressLogMessage
 | |
| {
 | |
|     unsigned progress;
 | |
| };
 | |
| 
 | |
| extern void measureDiskRotation();
 | |
| 
 | |
| extern void writeTracks(const DiskLayout& diskLayout,
 | |
|     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,
 | |
|     FluxSinkFactory& fluxSinkFactory,
 | |
|     Encoder& encoder,
 | |
|     FluxSource& fluxSource,
 | |
|     Decoder& decoder,
 | |
|     const Image& image,
 | |
|     const std::vector<CylinderHead>& locations);
 | |
| 
 | |
| extern void writeDiskCommand(const DiskLayout& diskLayout,
 | |
|     const Image& image,
 | |
|     Encoder& encoder,
 | |
|     FluxSinkFactory& fluxSinkFactory,
 | |
|     Decoder* decoder,
 | |
|     FluxSource* fluxSource,
 | |
|     const std::vector<CylinderHead>& locations);
 | |
| 
 | |
| extern void writeDiskCommand(const DiskLayout& diskLayout,
 | |
|     const Image& image,
 | |
|     Encoder& encoder,
 | |
|     FluxSinkFactory& fluxSinkFactory,
 | |
|     Decoder* decoder = nullptr,
 | |
|     FluxSource* fluxSource = nullptr);
 | |
| 
 | |
| extern void writeRawDiskCommand(
 | |
|     const DiskLayout& diskLayout, FluxSource& fluxSource, FluxSinkFactory& fluxSinkFactory);
 | |
| 
 | |
| struct TracksAndSectors
 | |
| {
 | |
|     std::vector<std::shared_ptr<const Track>> tracks;
 | |
|     std::vector<std::shared_ptr<const Sector>> sectors;
 | |
| };
 | |
| 
 | |
| extern TracksAndSectors readAndDecodeTrack(const DiskLayout& diskLayout,
 | |
|     FluxSource& fluxSource,
 | |
|     Decoder& decoder,
 | |
|     const std::shared_ptr<const LogicalTrackLayout>& ltl);
 | |
| 
 | |
| extern void readDiskCommand(const DiskLayout& diskLayout,
 | |
|     FluxSource& fluxSource,
 | |
|     Decoder& decoder,
 | |
|     Disk& disk);
 | |
| extern void readDiskCommand(const DiskLayout& diskLayout,
 | |
|     FluxSource& source,
 | |
|     Decoder& decoder,
 | |
|     ImageWriter& writer);
 | |
| 
 | |
| #endif
 |