Files
KubeControl/include/kubecontrol/WriterMemoryClass.hpp
2023-08-07 21:30:53 +02:00

70 lines
1.4 KiB
C++

#pragma once
#include <cstddef>
#include <cstdlib>
#include <cstring>
#include <iostream>
#define MAX_FILE_LENGTH 200000
class WriterMemoryClass
{
public:
// Helper Class for reading result from remote host
WriterMemoryClass()
{
this->m_pBuffer = NULL;
this->m_pBuffer = (char*) malloc(MAX_FILE_LENGTH * sizeof(char));
this->m_Size = 0;
};
~WriterMemoryClass()
{
if (this->m_pBuffer)
free(this->m_pBuffer);
};
void* Realloc(void* ptr, size_t size)
{
if(ptr)
return realloc(ptr, size);
else
return malloc(size);
};
// Callback must be declared static, otherwise it won't link...
size_t WriteMemoryCallback(char* ptr, size_t size, size_t nmemb)
{
// Calculate the real size of the incoming buffer
size_t realsize = size * nmemb;
// (Re)Allocate memory for the buffer
m_pBuffer = (char*) Realloc(m_pBuffer, m_Size + realsize);
// Test if Buffer is initialized correctly & copy memory
if (m_pBuffer == NULL) {
realsize = 0;
}
memcpy(&(m_pBuffer[m_Size]), ptr, realsize);
m_Size += realsize;
// return the real size of the buffer...
return realsize;
};
std::string getResponse()
{
return m_pBuffer;
}
void print()
{
std::cout << "Size: " << m_Size << std::endl;
std::cout << "Content: " << std::endl << m_pBuffer << std::endl;
}
// Public member vars
char* m_pBuffer;
size_t m_Size;
};