Browse Source

release() on module_free()

PYADPT-55
Volker Birk 9 years ago
parent
commit
1e2fa5e10f
  1. 10
      src/pEpmodule.cc
  2. 27
      src/pEpmodule.hh

10
src/pEpmodule.cc

@ -1,5 +1,4 @@
#include "pEpmodule.hh" #include "pEpmodule.hh"
#include <pEp/pEpEngine.h>
#include <string> #include <string>
namespace pEp { namespace pEp {
@ -13,14 +12,21 @@ namespace pEp {
return PyUnicode_FromString(version.c_str()); return PyUnicode_FromString(version.c_str());
} }
} }
void module_free(void *)
{
release(session);
}
} }
using namespace pEp;
PyMODINIT_FUNC PyInit_pEp(void) PyMODINIT_FUNC PyInit_pEp(void)
{ {
PEP_SESSION session;
PEP_STATUS status = init(&session); PEP_STATUS status = init(&session);
if (status != PEP_STATUS_OK) if (status != PEP_STATUS_OK)
return NULL; return NULL;
return PyModule_Create(&pEpmodule); return PyModule_Create(&pEpmodule);
} }

27
src/pEpmodule.hh

@ -1,4 +1,5 @@
#include <Python.h> #include <Python.h>
#include <pEp/pEpEngine.h>
namespace pEp { namespace pEp {
namespace PythonAdapter { namespace PythonAdapter {
@ -6,20 +7,32 @@ namespace pEp {
PyObject *about(PyObject *self, PyObject *args); PyObject *about(PyObject *self, PyObject *args);
} }
}
static PyMethodDef pEpMethods[] = { void module_free(void *);
struct module_state {
PEP_SESSION session;
};
struct PyMethodDef pEpMethods[] = {
{"about", pEp::PythonAdapter::about, METH_VARARGS, "about p≡p"}, {"about", pEp::PythonAdapter::about, METH_VARARGS, "about p≡p"},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}
}; };
static struct PyModuleDef pEpmodule = { struct PyModuleDef pEpmodule = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
"pEp", "pEp",
NULL, "p≡p Python adapter",
-1, -1,
pEpMethods pEpMethods,
}; NULL,
NULL,
NULL,
pEp::module_free
};
PEP_SESSION session;
}
PyMODINIT_FUNC PyInit_pEp(void); PyMODINIT_FUNC PyInit_pEp(void);

Loading…
Cancel
Save