00001 #pragma once
00002 #ifndef CORELAYER_H
00003 #define CORELAYER_H
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <transfer/gfal_transfer_internal.h>
00022 #include <transfer/plugininterface.h>
00023
00024
00025 namespace Gfal{
00026
00031 class PluginItem : public PluginLink{
00032
00033 public:
00034 PluginItem(void* dlhandle, void* data) : _dl(dlhandle), _data(data) {};
00035 virtual ~PluginItem(){};
00036
00037 virtual void* get_sym(const std::string & str) const;
00038
00039 virtual void* plugin_data();
00040 private:
00041 void* _dl;
00042 void* _data;
00043 };
00044
00045 class CoreLayer: public PluginFactory
00046 {
00047 public:
00048 CoreLayer(gfal_handle handle);
00049 CoreLayer();
00050 virtual ~CoreLayer();
00051
00052 virtual const VectorPlugin & get_plugin_links();
00053 private:
00054 void _init(gfal_handle handle);
00055
00056 bool _internal_handle;
00057 gfal_handle _handle;
00058 VectorPlugin _plugins;
00059
00060 };
00061
00062
00063 }
00064
00065 #endif