reHDD/src/printer.cpp

81 lines
2.2 KiB
C++

/**
* @file printer.cpp
* @brief Send drive data to printer service using ipc msg queue
* @author Hendrik Schutter
* @date 24.11.2022
*/
#include "../include/reHDD.h"
bool Printer::instanceFlag = false;
Printer* Printer::single = NULL;
/**
* \brief create new Printer instance
* \param path to log file
* \param struct with data
* \return instance of Printer
*/
Printer::Printer()
{
if (-1 == (this->msqid = msgget((key_t)IPC_MSG_QUEUE_KEY, IPC_CREAT | 0666)))
{
Logger::logThis()->error("Printer: Create mgs queue failed!");
}
}
/**
* \brief deconstructor
* \return void
*/
Printer::~Printer()
{
instanceFlag = false;
}
/**
* \brief send data to msg queue
* \return void
*/
void Printer::print()
{
t_msgQueueData msgQueueData;
msgQueueData.msg_queue_type = 1;
sprintf(msgQueueData.driveData.caDriveIndex, "%i",42);
sprintf(msgQueueData.driveData.caDriveState, "shredded");
sprintf(msgQueueData.driveData.caDriveModelFamiliy, "Toshiba 2.5\\ HDD MK..65GSSX");
sprintf(msgQueueData.driveData.caDriveModelName, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
sprintf(msgQueueData.driveData.caDriveCapacity, "%li",343597383680); //343597383680
sprintf(msgQueueData.driveData.caDriveSerialnumber, "YG6742U56UDRL123");
sprintf(msgQueueData.driveData.caDriveHours, "%i",7074);
sprintf(msgQueueData.driveData.caDriveCycles, "%i",4792);
sprintf(msgQueueData.driveData.caDriveErrors, "%i",1);
sprintf(msgQueueData.driveData.caDriveShredTimestamp, "%i",1647937421);
sprintf(msgQueueData.driveData.caDriveShredDuration, "%i",81718);
sprintf(msgQueueData.driveData.caDriveReHddVersion, "bV0.2.2");
if (-1 == msgsnd(this->msqid, &msgQueueData, sizeof(t_msgQueueData) - sizeof(long), 0))
{
Logger::logThis()->error("Printer: Send mgs queue failed!");
}
}
/**
* \brief return a instance of the printer
* \return printer obj
*/
Printer* Printer::getPrinter()
{
if (!instanceFlag)
{
single = new Printer(); //create new obj
instanceFlag = true;
return single;
}
else
{
return single; //return existing obj
}
}