Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _VMWARE_TOOLS_RPCDEBUG_H_
00020 #define _VMWARE_TOOLS_RPCDEBUG_H_
00021
00032 #include "vmware/tools/plugin.h"
00033
00034
00041 #define RPCDEBUG_ASSERT(test, retval) do { \
00042 CU_ASSERT(test); \
00043 g_return_val_if_fail(test, retval); \
00044 } while (0)
00045
00046
00047 struct RpcDebugPlugin;
00048
00053 typedef gboolean (*RpcDebugRecvFn)(char *data,
00054 size_t dataLen,
00055 char **result,
00056 size_t *resultLen);
00057
00059 typedef struct RpcDebugRecvMapping {
00060 gchar *name;
00061 RpcDebugRecvFn recvFn;
00066 gpointer xdrProc;
00068 size_t xdrSize;
00069 } RpcDebugRecvMapping;
00070
00071
00077 typedef gboolean (*RpcDebugValidateFn)(RpcInData *data,
00078 gboolean ret);
00079
00081 typedef struct RpcDebugMsgMapping {
00082 gchar *message;
00083 size_t messageLen;
00084 RpcDebugValidateFn validateFn;
00085 gboolean freeMsg;
00086 } RpcDebugMsgMapping;
00087
00089 typedef struct RpcDebugMsgList {
00090 RpcDebugMsgMapping *mappings;
00091 size_t index;
00092 } RpcDebugMsgList;
00093
00094
00102 typedef gboolean (*RpcDebugSendFn)(RpcDebugMsgMapping *rpcdata);
00103
00105 typedef void (*RpcDebugShutdownFn)(ToolsAppCtx *ctx,
00106 struct RpcDebugPlugin *plugin);
00107
00112 typedef struct RpcDebugPlugin {
00114 RpcDebugRecvMapping *recvFns;
00119 RpcDebugRecvFn dfltRecvFn;
00121 RpcDebugSendFn sendFn;
00123 RpcDebugShutdownFn shutdownFn;
00125 ToolsPluginData *plugin;
00126 } RpcDebugPlugin;
00127
00128
00133 typedef RpcDebugPlugin *(*RpcDebugOnLoadFn)(ToolsAppCtx *ctx);
00134
00135 struct RpcDebugLibData;
00136
00142 typedef struct RpcDebugLibData {
00143 RpcChannel * (*newDebugChannel) (ToolsAppCtx *,
00144 struct RpcDebugLibData *);
00145 int (*run) (ToolsAppCtx *,
00146 gpointer runMainLoop,
00147 gpointer runData,
00148 struct RpcDebugLibData *);
00149 RpcDebugPlugin *debugPlugin;
00150 } RpcDebugLibData;
00151
00153 typedef RpcDebugLibData *(* RpcDebugInitializeFn)(ToolsAppCtx *, gchar *);
00154
00155
00156 G_BEGIN_DECLS
00157
00158 void
00159 RpcDebug_DecRef(ToolsAppCtx *ctx);
00160
00161 void
00162 RpcDebug_IncRef(void);
00163
00164 RpcDebugLibData *
00165 RpcDebug_Initialize(ToolsAppCtx *ctx,
00166 gchar *dbgPlugin);
00167
00168 gboolean
00169 RpcDebug_SendNext(RpcDebugMsgMapping *rpcdata,
00170 RpcDebugMsgList *list);
00171
00172 void
00173 RpcDebug_SetResult(const char *str,
00174 char **res,
00175 size_t *len);
00176
00177 G_END_DECLS
00178
00181 #endif
00182