/** * @file shred.h * @brief shred drive * @author hendrik schutter * @date 03.05.2020 */ #ifndef SHRED_H_ #define SHRED_H_ #include "reHDD.h" #include #include #include #include #include #include #define CHUNK_SIZE 1024*1024*32 //amount of bytes that are overwritten at once --> 32MB #define TFNG_DATA_SIZE CHUNK_SIZE //amount of bytes used by tfng //#define DEMO_DRIVE_SIZE 1024*1024*256L // 256MB //#define DEMO_DRIVE_SIZE 1024*1024*1024L // 1GB //#define DEMO_DRIVE_SIZE 5*1024*1024*1024L // 5GB //#define DEMO_DRIVE_SIZE 1024*1024*1024*10L // 10GB typedef int fileDescriptor; class Shred { protected: public: Shred(); ~Shred(); int shredDrive(Drive* drive, int* ipSignalFd); private: fileDescriptor randomSrcFileDiscr; fileDescriptor driveFileDiscr; unsigned char caTfngData[TFNG_DATA_SIZE]; unsigned char caReadBuffer[CHUNK_SIZE]; unsigned long ulDriveByteSize; unsigned long ulDriveByteOverallCount = 0; //all bytes shredded in all iterations + checking -> used for progress calculation double d32Percent = 0.0; double d32TmpPercent = 0.0; inline double calcProgress(); int iRewindDrive(fileDescriptor file); unsigned long getDriveSizeInBytes(fileDescriptor file); unsigned int uiCalcChecksum(fileDescriptor file, Drive* drive, int* ipSignalFd); void cleanup(); }; #endif // SHRED_H_