Add PluginDataPersistence

This commit is contained in:
Maschell 2020-05-17 20:45:10 +02:00
parent 3b9f4a9a51
commit db9b113eab
5 changed files with 42 additions and 14 deletions

View File

@ -4,19 +4,18 @@
#include "PluginInformationFactory.h"
#include "PluginMetaInformationFactory.h"
#include "PluginContainerPersistence.h"
#include "PluginDataPersistence.h"
#include "DynamicLinkingHelper.h"
#include "common/plugin_defines.h"
#include "PluginInformation.h"
#include "RelocationData.h"
bool PluginContainerPersistence::savePlugin(plugin_information_t *pluginInformation, PluginContainer &plugin) {
int32_t plugin_count = pluginInformation->number_used_plugins;
auto pluginName = plugin.getMetaInformation().getName();
//auto pluginPath = plugin.getMetaInformation().getPath();
if (plugin_count >= MAXIMUM_PLUGINS - 1) {
DEBUG_FUNCTION_LINE("Maximum of %d plugins reached. %s won't be loaded!\n", MAXIMUM_PLUGINS, pluginName.c_str());
return false;
@ -167,10 +166,7 @@ bool PluginContainerPersistence::savePlugin(plugin_information_t *pluginInformat
auto pluginData = plugin.getPluginData();
auto plugin_data_data = &plugin_data->data;
plugin_data_data->buffer = (char *) pluginData.buffer;
plugin_data_data->bufferLength = pluginData.length;
plugin_data_data->memoryType = pluginData.memoryType;
plugin_data_data->heapHandle = (int) pluginData.heapHandle;
PluginDataPersistence::save(plugin_data_data, pluginData);
pluginInformation->number_used_plugins++;
@ -209,15 +205,9 @@ std::vector<PluginContainer> PluginContainerPersistence::loadPlugins(plugin_info
metaInformation.setSize(meta->size);
metaInformation.setName(meta->name);
PluginData pluginData;
plugin_data_t *data = &(plugin_data->data);
pluginData.buffer = data->buffer;
pluginData.length = data->bufferLength;
pluginData.memoryType = (eMemoryTypes) data->memoryType;
pluginData.heapHandle = (MEMHeapHandle) data->heapHandle;
pluginData.loadReader();
PluginData pluginData = PluginDataPersistence::load(data);
PluginInformation pluginInformation;

View File

@ -8,4 +8,6 @@ public:
static bool savePlugin(plugin_information_t *pluginInformation, PluginContainer &plugin);
static std::vector<PluginContainer> loadPlugins(plugin_information_t *pluginInformation);
static bool savePluginData(plugin_data_t *pluginDataStruct, PluginData &plugin);
};

View File

@ -73,5 +73,5 @@ private:
friend class PluginContainer;
friend class PluginContainerPersistence;
friend class PluginDataPersistence;
};

View File

@ -0,0 +1,25 @@
#include <common/plugin_defines.h>
#include "PluginDataPersistence.h"
#include "PluginData.h"
bool PluginDataPersistence::save(plugin_data_t *pluginDataStruct, PluginData &plugin) {
if(pluginDataStruct == NULL){
return false;
}
pluginDataStruct->buffer = (char *) plugin.buffer;
pluginDataStruct->bufferLength = plugin.length;
pluginDataStruct->memoryType = plugin.memoryType;
pluginDataStruct->heapHandle = (int) plugin.heapHandle;
return true;
}
PluginData PluginDataPersistence::load(plugin_data_t *pluginDataStruct) {
PluginData pluginData;
pluginData.buffer = pluginDataStruct->buffer;
pluginData.length = pluginDataStruct->bufferLength;
pluginData.memoryType = (eMemoryTypes) pluginDataStruct->memoryType;
pluginData.heapHandle = (MEMHeapHandle) pluginDataStruct->heapHandle;
pluginData.loadReader();
return pluginData;
}

View File

@ -0,0 +1,11 @@
#pragma once
#include "PluginData.h"
class PluginDataPersistence {
public:
static bool save(plugin_data_t *pluginDataStruct, PluginData &plugin);
static PluginData load(plugin_data_t *pluginDataStruct);
};