mirror of https://github.com/Icinga/icinga2.git
Bug fixes for script function calls.
This commit is contained in:
parent
2485a04694
commit
2faca52744
|
@ -72,16 +72,18 @@ void ScriptInterpreter::ThreadWorkerProc(void)
|
|||
|
||||
ScriptCall call = m_Calls.front();
|
||||
m_Calls.pop_front();
|
||||
|
||||
ProcessCall(call.Task, call.Function, call.Arguments);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptInterpreter::ScriptFunctionThunk(const ScriptTask::Ptr& task,
|
||||
const vector<Value>& arguments, const String& function)
|
||||
const String& function, const vector<Value>& arguments)
|
||||
{
|
||||
ScriptCall call;
|
||||
call.Task = task;
|
||||
call.Function = function;
|
||||
call.Arguments = arguments;
|
||||
call.Task = task;
|
||||
|
||||
{
|
||||
boost::mutex::scoped_lock lock(m_Mutex);
|
||||
|
@ -96,7 +98,7 @@ void ScriptInterpreter::SubscribeFunction(const String& name)
|
|||
|
||||
m_SubscribedFunctions.insert(name);
|
||||
|
||||
ScriptFunction::Ptr sf = boost::make_shared<ScriptFunction>(boost::bind(&ScriptInterpreter::ScriptFunctionThunk, this, _1, _2, name));
|
||||
ScriptFunction::Ptr sf = boost::make_shared<ScriptFunction>(boost::bind(&ScriptInterpreter::ScriptFunctionThunk, this, _1, name, _2));
|
||||
ScriptFunction::Register(name, sf);
|
||||
}
|
||||
|
||||
|
|
|
@ -25,9 +25,9 @@ namespace icinga
|
|||
|
||||
struct ScriptCall
|
||||
{
|
||||
ScriptTask::Ptr Task;
|
||||
String Function;
|
||||
vector<Value> Arguments;
|
||||
ScriptTask::Ptr Task;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -49,7 +49,7 @@ public:
|
|||
protected:
|
||||
ScriptInterpreter(const Script::Ptr& script);
|
||||
|
||||
virtual void ProcessCall(const String& function, const ScriptTask::Ptr& task,
|
||||
virtual void ProcessCall(const ScriptTask::Ptr& task, const String& function,
|
||||
const vector<Value>& arguments) = 0;
|
||||
|
||||
void SubscribeFunction(const String& name);
|
||||
|
@ -67,8 +67,8 @@ private:
|
|||
|
||||
void ThreadWorkerProc(void);
|
||||
|
||||
void ScriptFunctionThunk(const ScriptTask::Ptr& task,
|
||||
const vector<Value>& arguments, const String& function);
|
||||
void ScriptFunctionThunk(const ScriptTask::Ptr& task, const String& function,
|
||||
const vector<Value>& arguments);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ void PythonInterpreter::UnregisterFunction(const String& name)
|
|||
m_Functions.erase(name);
|
||||
}
|
||||
|
||||
void PythonInterpreter::ProcessCall(const String& function, const ScriptTask::Ptr& task,
|
||||
void PythonInterpreter::ProcessCall(const ScriptTask::Ptr& task, const String& function,
|
||||
const vector<Value>& arguments)
|
||||
{
|
||||
PyEval_AcquireThread(m_ThreadState);
|
||||
|
|
|
@ -45,7 +45,7 @@ protected:
|
|||
PyThreadState *m_ThreadState;
|
||||
map<String, PyObject *> m_Functions;
|
||||
|
||||
virtual void ProcessCall(const String& function, const ScriptTask::Ptr& task,
|
||||
virtual void ProcessCall(const ScriptTask::Ptr& task, const String& function,
|
||||
const vector<Value>& arguments);
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue