[icinga-checkins] icinga.org: icinga2/master: Python build fix.

git at icinga.org git at icinga.org
Wed Mar 27 10:56:00 CET 2013


Module: icinga2
Branch: master
Commit: b9ded4a851c3fddafedc14cf2d7dfb312665bea7
URL:    https://git.icinga.org/?p=icinga2.git;a=commit;h=b9ded4a851c3fddafedc14cf2d7dfb312665bea7

Author: Gunnar Beutner <gunnar at beutner.name>
Date:   Wed Mar 27 06:27:44 2013 +0000

Python build fix.

---

 lib/python/pythoninterpreter.cpp |   16 +++++++++-------
 lib/python/pythoninterpreter.h   |    3 +--
 lib/python/pythonlanguage.cpp    |    5 ++---
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/lib/python/pythoninterpreter.cpp b/lib/python/pythoninterpreter.cpp
index 95b9b74..8d31155 100644
--- a/lib/python/pythoninterpreter.cpp
+++ b/lib/python/pythoninterpreter.cpp
@@ -74,8 +74,7 @@ void PythonInterpreter::UnregisterPythonFunction(const String& name)
 	m_Functions.erase(name);
 }
 
-void PythonInterpreter::ProcessCall(const ScriptTask::Ptr& task, const String& function,
-    const std::vector<Value>& arguments)
+Value PythonInterpreter::ProcessCall(const String& function, const std::vector<Value>& arguments)
 {
 	ObjectLock olock(this);
 
@@ -120,11 +119,14 @@ void PythonInterpreter::ProcessCall(const ScriptTask::Ptr& task, const String& f
 		Value vresult = PythonLanguage::MarshalFromPython(result);
 		Py_DECREF(result);
 
-		task->FinishResult(vresult);
+		m_Language->SetCurrentInterpreter(interp);
+		PyEval_ReleaseThread(m_ThreadState);
+
+		return vresult;
 	} catch (...) {
-		task->FinishException(boost::current_exception());
-	}
+		m_Language->SetCurrentInterpreter(interp);
+		PyEval_ReleaseThread(m_ThreadState);
 
-	m_Language->SetCurrentInterpreter(interp);
-	PyEval_ReleaseThread(m_ThreadState);
+		throw;
+	}
 }
diff --git a/lib/python/pythoninterpreter.h b/lib/python/pythoninterpreter.h
index 088877d..15a8956 100644
--- a/lib/python/pythoninterpreter.h
+++ b/lib/python/pythoninterpreter.h
@@ -49,8 +49,7 @@ protected:
 	PyThreadState *m_ThreadState;
 	std::map<String, PyObject *> m_Functions;
 
-	virtual void ProcessCall(const ScriptTask::Ptr& task, const String& function,
-	    const std::vector<Value>& arguments);
+	virtual Value ProcessCall(const String& function, const std::vector<Value>& arguments);
 };
 
 }
diff --git a/lib/python/pythonlanguage.cpp b/lib/python/pythonlanguage.cpp
index 21f813a..6f952df 100644
--- a/lib/python/pythonlanguage.cpp
+++ b/lib/python/pythonlanguage.cpp
@@ -19,6 +19,7 @@
 
 #include "python/pythonlanguage.h"
 #include "python/pythoninterpreter.h"
+#include "base/scriptfunction.h"
 #include "base/dynamictype.h"
 #include "base/objectlock.h"
 #include "base/application.h"
@@ -320,9 +321,7 @@ PyObject *PythonLanguage::PyCallNativeFunction(PyObject *self, PyObject *args)
 	Value result;
 
 	try {
-		ScriptTask::Ptr task = boost::make_shared<ScriptTask>(function, arguments);
-		task->Start();
-		result = task->GetResult();
+		result = function->Invoke(arguments);
 	} catch (const std::exception& ex) {
 		PyEval_RestoreThread(tstate);
 





More information about the icinga-checkins mailing list