Files
CPP/ctest/main.cpp
2025-08-16 17:21:16 -04:00

201 lines
3.8 KiB
C++

#include <stdio.h>
#include <common/string.hpp>
#include <common/block.hpp>
#include <common/pointer.hpp>
#include <common/fileio.hpp>
#include <common/profiler.hpp>
#include <common/mmap.hpp>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <tuple>
#include <utility>
#include <complex>
#include <csignal>
#include <common/callback.hpp>
bool registerSignalHandler(void); // registers a Control-c handler
void signalHandler(int signal); // The Control-C handler
class Info
{
public:
Info();
~Info();
String getMessage(void);
void setMessage(const String &message);
private:
String mMessage;
};
Info::Info()
{
std::cout << "Info" << std::endl;
}
Info::~Info()
{
std::cout << "~Info" << std::endl;
}
String Info::getMessage(void)
{
return mMessage;
}
void Info::setMessage(const String &message)
{
mMessage = message;
}
class B
{
public:
B();
LONG callback(CallbackData<Info> &callbackData);
~B();
private:
String mFoo;
};
B::B()
{
}
B::~B()
{
}
LONG B::callback(CallbackData<Info> &callbackData)
{
std::cout << "callback with data " << callbackData.getData().getMessage().str() << std::endl;
return 0;
}
class Monitor
{
public:
Monitor();
~Monitor();
void setCallback(Callback<B,Info> &callback);
void doCallback(CallbackData<Info> &callbackData);
private:
Callback<B,Info> mCallback;
};
Monitor::Monitor()
{
std::cout << "Monitor" << std::endl;
}
Monitor::~Monitor()
{
std::cout << "~Monitor" << std::endl;
}
void Monitor::setCallback(Callback<B,Info> &callback)
{
mCallback=callback;
}
void Monitor::doCallback(CallbackData<Info> &callbackData)
{
CallbackPointer cbptr(&mCallback);
cbptr.callback(callbackData);
}
int main(int argc, char ** argv)
{
registerSignalHandler();
while(true)
{
// do stuff
}
// std::vector<int> myBigVec(10000000, 2011);
// std::vector<std::string> s1;
// std::vector<std::string> s2;
// s1.push_back("hello");
// s1.push_back("world");
// s2 = std::move(s1);
// Monitor monitor;
// SmartPointer<B> b(true);
// Callback<B,Info> callback(&(*b),&B::callback);
// monitor.setCallback(callback);
// Info info;
// info.setMessage("Hello");
// CallbackData<Info> callbackData(info);
// monitor.doCallback(callbackData);
}
/// @brief The signal handler
void signalHandler(int signal)
{
std::cout << "Received signal " << signal << std::endl;
exit(signal);
}
/// @brief Method that registers the signal handler
/// @param
bool registerSignalHandler(void)
{
struct sigaction sa;
sa.sa_handler = signalHandler;
sigemptyset(&sa.sa_mask); // Clear the mask of blocked signals
sa.sa_flags = 0; // No special flags
if (-1==sigaction(SIGINT, &sa, nullptr))
{
std::cerr << "Error registering SIGINT handler." << std::endl;
return false;
}
return true;
}
// Callback callback(&(*b),C
// SmartPointer<B> b1 = b;
// b1->foo();
// b->foo();
// String str="Hello";
// b->setFoo(str);
// str="Goodbye";
// String str2=b->getFoo();
// str2="world";
void readFile()
{
// MemoryMappedFile memoryMappedFile("/home/pi/Boneyard/ctest/main.cpp",MemoryMappedFile::CreationFlags::ReadOnly);
// MemoryMappedFile memoryMappedFile("/home/pi/Boneyard/ctest/test.txt",MemoryMappedFile::CreationFlags::ReadOnly);
MemoryMappedFile memoryMappedFile("/mnt/mariadb/backupdb.sql",MemoryMappedFile::CreationFlags::ReadOnly);
Profiler profiler = Profiler();
String strLine;
DWORD lines = 0;
strLine.reserve(1400000,0);
while(memoryMappedFile.readLine(strLine))
{
// printf("%s\n",(char*)strLine);
lines++;
if(!(lines%1000000))
{
printf("reading %d %s\n",lines,(char*)strLine);
}
}
memoryMappedFile.close();
printf("done, took %d(ms)...\n",profiler.end());
}