//Calls the lua callbacks associated with this query void Transaction::doCallback(GarrysMod::Lua::ILuaBase* LUA, std::shared_ptr<IQueryData> ptr) { TransactionData* data = (TransactionData*)ptr.get(); data->setStatus(QUERY_COMPLETE); for (auto& pair : data->m_queries) { auto query = pair.first; auto queryData = pair.second; query->setCallbackData(queryData); } switch (data->getResultStatus()) { case QUERY_NONE: break; case QUERY_ERROR: if (data->getErrorReference() != 0) { this->runFunction(LUA, data->getErrorReference(), "s", data->getError().c_str()); } else if (data->isFirstData()) { this->runCallback(LUA, "onError", "s", data->getError().c_str()); } break; case QUERY_SUCCESS: if (data->getSuccessReference() != 0) { this->runFunction(LUA, data->getSuccessReference()); } else if (data->isFirstData()) { this->runCallback(LUA, "onSuccess"); } break; } for (auto& pair : data->m_queries) { auto query = pair.first; auto queryData = pair.second; query->onQueryDataFinished(LUA, queryData); } }
static void SetPropFn(UpdaterInfo* pUI, TOKENINFO* pTokens, int nTokens, int nLineNo) { fprintf(pUI->log_fp, "Setting property: %s, value: %s", pTokens[1].pString, pTokens[2].pString); property_set(pUI, pTokens[1].pString, pTokens[2].pString); setCallbackData(pUI, strdup("")); }
static void KillByNameFn(UpdaterInfo* pUI, TOKENINFO* pTokens, int nTokens, int nLineNo) { int signal = get_signal(pTokens[1].pString); fprintf(pUI->log_fp, "Killing process by name %s with signal %s\n", pTokens[2].pString, pTokens[1].pString); kill_processes_by_name(pUI->log_fp, pTokens[2].pString, signal); setCallbackData(pUI, strdup("")); }
static void GetPropFn(UpdaterInfo* pUI, TOKENINFO* pTokens, int nTokens, int nLineNo) { fprintf(pUI->log_fp, "Getting property: %s\n", pTokens[1].pString); char value[PROPERTY_VALUE_MAX]; pUI->callbackReturnCode = property_get(pTokens[1].pString, value, ""); setCallbackData(pUI, strdup(value)); fprintf(pUI->log_fp, "Got property: %s, value: %s\n", pTokens[1].pString, value); }
static void RunFn(UpdaterInfo* pUI, TOKENINFO* pTokens, int nTokens, int nLineNo) { int i, size; char* buffer = tokensToString(pTokens, nTokens); setCallbackData(pUI, buffer); fprintf(pUI->log_fp, "Running command: %s\n", buffer); #ifdef ANDROID pUI->callbackReturnCode = system(pUI->callbackReturnData); #else printf("\t ==> running: %s\n", buffer); pUI->callbackReturnCode = 1; #endif }
static void UIPrintFn(UpdaterInfo* pUI, TOKENINFO* pTokens, int nTokens, int nLineNo) { char* buffer; char* line; fprintf(pUI->cmd_pipe, "ui_print\n"); buffer = tokensToString(pTokens, nTokens); line = strtok(buffer, "\n"); while (line) { fprintf(pUI->cmd_pipe, "ui_print %s\n", line); line = strtok(NULL, "\n"); } fprintf(pUI->cmd_pipe, "ui_print\n"); pUI->callbackReturnCode = 0; setCallbackData(pUI, buffer); }
static void UIPrintAction(UpdaterInfo* pUI, TOKENINFO* pTokens, int nTokens, int nLineNo) { pUI->callbackReturnCode = 0; setCallbackData(pUI, pTokens[0].pString); }