diff options
Diffstat (limited to 'py/modules/IcePy/ThreadNotification.cpp')
-rw-r--r-- | py/modules/IcePy/ThreadNotification.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/py/modules/IcePy/ThreadNotification.cpp b/py/modules/IcePy/ThreadNotification.cpp new file mode 100644 index 00000000000..c6a62fa103c --- /dev/null +++ b/py/modules/IcePy/ThreadNotification.cpp @@ -0,0 +1,52 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2006 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifdef _WIN32 +# include <IceUtil/Config.h> +#endif +#include <ThreadNotification.h> + +using namespace std; +using namespace IcePy; + +IcePy::ThreadNotificationWrapper::ThreadNotificationWrapper(PyObject* threadNotification) : + _threadNotification(threadNotification) +{ + Py_INCREF(threadNotification); +} + +void +IcePy::ThreadNotificationWrapper::start() +{ + AdoptThread adoptThread; // Ensure the current thread is able to call into Python. + + PyObjectHandle tmp = PyObject_CallMethod(_threadNotification.get(), STRCAST("start"), NULL); + if(tmp.get() == NULL) + { + throwPythonException(); + } +} + +void +IcePy::ThreadNotificationWrapper::stop() +{ + AdoptThread adoptThread; // Ensure the current thread is able to call into Python. + + PyObjectHandle tmp = PyObject_CallMethod(_threadNotification.get(), STRCAST("stop"), NULL); + if(tmp.get() == NULL) + { + throwPythonException(); + } +} + +PyObject* +IcePy::ThreadNotificationWrapper::getObject() +{ + return _threadNotification.get(); +} |