static void ToolsCoreDumpPluginInfo(ToolsServiceState *state, ToolsPluginData *plugin) { ToolsCore_LogState(TOOLS_STATE_LOG_CONTAINER, "Plugin: %s\n", plugin->name); if (plugin->regs == NULL) { ToolsCore_LogState(TOOLS_STATE_LOG_PLUGIN, "No registrations.\n"); } }
static void VmBackupDumpState(gpointer src, ToolsAppCtx *ctx, gpointer data) { if (gBackupState == NULL) { ToolsCore_LogState(TOOLS_STATE_LOG_PLUGIN, "Backup is idle.\n"); } else { ToolsCore_LogState(TOOLS_STATE_LOG_PLUGIN, "Backup is in state: %s\n", VmBackupGetStateName(gBackupState->machineState)); } }
void ToolsCore_DumpState(ToolsServiceState *state) { guint i; const char *providerStates[] = { "idle", "active", "error" }; ASSERT_ON_COMPILE(ARRAYSIZE(providerStates) == TOOLS_PROVIDER_MAX); if (!g_main_loop_is_running(state->ctx.mainLoop)) { ToolsCore_LogState(TOOLS_STATE_LOG_ROOT, "VM Tools Service '%s': not running.\n", state->name); return; } ToolsCore_LogState(TOOLS_STATE_LOG_ROOT, "VM Tools Service '%s':\n", state->name); ToolsCore_LogState(TOOLS_STATE_LOG_CONTAINER, "Plugin path: %s\n", state->pluginPath); for (i = 0; i < state->providers->len; i++) { ToolsAppProviderReg *prov = &g_array_index(state->providers, ToolsAppProviderReg, i); ToolsCore_LogState(TOOLS_STATE_LOG_CONTAINER, "App provider: %s (%s)\n", prov->prov->name, providerStates[prov->state]); if (prov->prov->dumpState != NULL) { prov->prov->dumpState(&state->ctx, prov->prov, NULL); } } ToolsCore_DumpPluginInfo(state); g_signal_emit_by_name(state->ctx.serviceObj, TOOLS_CORE_SIG_DUMP_STATE, &state->ctx); }
static void ToolsCoreDumpSignal(ToolsAppCtx *ctx, ToolsAppProvider *prov, gpointer reg) { if (reg != NULL) { ToolsPluginSignalCb *sig = reg; ToolsCore_LogState(TOOLS_STATE_LOG_PLUGIN, "Signal callback: %s\n", sig->signame); } }
static void ToolsCoreDumpRPC(ToolsAppCtx *ctx, ToolsAppProvider *prov, gpointer reg) { if (reg != NULL) { RpcChannelCallback *cb = reg; ToolsCore_LogState(TOOLS_STATE_LOG_PLUGIN, "RPC callback: %s\n", cb->name); } }
static void ToolsCoreDumpProperty(ToolsAppCtx *ctx, ToolsAppProvider *prov, gpointer reg) { if (reg != NULL) { ToolsCore_LogState(TOOLS_STATE_LOG_PLUGIN, "Service property: %s.\n", ((ToolsServiceProperty *)reg)->name); } }
static gboolean ToolsCoreDumpAppInfo(ToolsServiceState *state, ToolsPluginData *plugin, ToolsAppType type, ToolsAppProviderReg *preg, gpointer reg) { if (preg != NULL) { if (preg->prov->dumpState != NULL) { preg->prov->dumpState(&state->ctx, preg->prov, reg); } else { ToolsCore_LogState(TOOLS_STATE_LOG_PLUGIN, "App type %u (no provider info).\n", type); } } else { ToolsCore_LogState(TOOLS_STATE_LOG_PLUGIN, "App type %u (no provider).\n", type); } return TRUE; }