diff --git a/source/plugin/PluginContainerPersistence.cpp b/source/plugin/PluginContainerPersistence.cpp index 262f677..4891916 100644 --- a/source/plugin/PluginContainerPersistence.cpp +++ b/source/plugin/PluginContainerPersistence.cpp @@ -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 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; diff --git a/source/plugin/PluginContainerPersistence.h b/source/plugin/PluginContainerPersistence.h index 361360c..5d6b26e 100644 --- a/source/plugin/PluginContainerPersistence.h +++ b/source/plugin/PluginContainerPersistence.h @@ -8,4 +8,6 @@ public: static bool savePlugin(plugin_information_t *pluginInformation, PluginContainer &plugin); static std::vector loadPlugins(plugin_information_t *pluginInformation); + + static bool savePluginData(plugin_data_t *pluginDataStruct, PluginData &plugin); }; diff --git a/source/plugin/PluginData.h b/source/plugin/PluginData.h index ac4addd..6f26979 100644 --- a/source/plugin/PluginData.h +++ b/source/plugin/PluginData.h @@ -73,5 +73,5 @@ private: friend class PluginContainer; - friend class PluginContainerPersistence; + friend class PluginDataPersistence; }; diff --git a/source/plugin/PluginDataPersistence.cpp b/source/plugin/PluginDataPersistence.cpp new file mode 100644 index 0000000..90c7641 --- /dev/null +++ b/source/plugin/PluginDataPersistence.cpp @@ -0,0 +1,25 @@ +#include +#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; +} \ No newline at end of file diff --git a/source/plugin/PluginDataPersistence.h b/source/plugin/PluginDataPersistence.h new file mode 100644 index 0000000..c5ad370 --- /dev/null +++ b/source/plugin/PluginDataPersistence.h @@ -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); +};