00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _XLV_EXPORT_H
00023 #define _XLV_EXPORT_H
00024
00025 #include <glib.h>
00026 #include "xlv_plugin_mgr.h"
00027
00028 typedef gpointer XLV_ExportFunction;
00029
00030 typedef struct _XLV_ExportMgr XLV_ExportMgr;
00031 typedef struct _XLV_ExportCluster XLV_ExportCluster;
00032 typedef struct _XLV_ExportElement XLV_ExportElement;
00033
00034 #ifdef _XLV_INTERNAL
00035 struct _XLV_ExportMgr {
00036 GList *m_clusters;
00037 };
00038
00039 struct _XLV_ExportCluster {
00040 gchar *m_cname;
00041 gchar *m_cidname;
00042 XLV_Plugin *m_plugin;
00043 XLV_Stream *m_opened_stream;
00044 guint16 m_lock;
00045
00046 GList *m_exports;
00047 XLV_Module *m_module;
00048 };
00049
00050 struct _XLV_ExportElement {
00051 XLV_ExportFunction m_function;
00052 guint32 m_export_id;
00053 };
00054 #endif
00055
00056 #ifdef __cplusplus
00057 extern "C" {
00058 #endif
00059
00060 XLV_ExportCluster *xlv_export_pack (XLV_PluginMgr * mgr,
00061 XLV_Module * module,
00062 const gchar * cluster_name,
00063 const gchar * cluster_idname);
00064
00065 gboolean xlv_export_add (XLV_ExportCluster * cluster, guint export_id,
00066 XLV_ExportFunction function);
00067
00068 XLV_ExportCluster *xlv_export_get_cluster (XLV_PluginMgr * mgr,
00069 const gchar * clustername);
00070
00071 void xlv_export_lock_cluster (XLV_ExportCluster * cluster);
00072 void xlv_export_unlock_cluster (XLV_ExportCluster * cluster);
00073
00074 XLV_ExportFunction xlv_export_get_function (XLV_ExportCluster * cluster,
00075 guint export_id);
00076
00077 #ifdef __cplusplus
00078 }
00079 #endif
00080 #endif