| 199 | } |
| 200 | |
| 201 | bool CPythonHandler::LoadHandler(bool reload) |
| 202 | { |
| 203 | char szErrBuf[1024]; |
| 204 | PyObject *m; |
| 205 | CEnterLeavePython celp; |
| 206 | m = PyImport_ImportModule(m_engine->m_module_name); |
| 207 | if (m && reload) { |
| 208 | PyObject *m_orig = m; |
| 209 | m = PyImport_ReloadModule(m); |
| 210 | Py_DECREF(m_orig); |
| 211 | } |
| 212 | if (!m) { |
| 213 | _snprintf(szErrBuf, sizeof(szErrBuf)/sizeof(szErrBuf[0]), |
| 214 | "Failed to import callback module '%s'", m_engine->m_module_name); |
| 215 | ExtensionError(NULL, szErrBuf); |
| 216 | } |
| 217 | if (m) { |
| 218 | Py_XDECREF(m_handler); |
| 219 | if (!((m_handler = PyObject_CallMethod(m, (char *)m_namefactory, NULL)))) { |
| 220 | _snprintf(szErrBuf, sizeof(szErrBuf)/sizeof(szErrBuf[0]), |
| 221 | "Factory function '%s' failed", m_namefactory); |
| 222 | ExtensionError(NULL, szErrBuf); |
| 223 | } |
| 224 | Py_DECREF(m); |
| 225 | } |
| 226 | return m_handler != NULL; |
| 227 | } |
| 228 | |
| 229 | |
| 230 | bool CPythonHandler::CheckCallback(const char *cbname, PyObject **cb) |
nothing calls this directly
no test coverage detected