70 lines
1.4 KiB
C++
70 lines
1.4 KiB
C++
#pragma once
|
|
#include <cstddef>
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
#include <iostream>
|
|
|
|
#define MAX_FILE_LENGTH 20000
|
|
|
|
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;
|
|
}; |