Skip to content
Snippets Groups Projects
Commit 37f6fb7f authored by Alexey Stratulat's avatar Alexey Stratulat
Browse files

[*] Changed the wrapper. Added temporary initialization of dap_common. Made a...

[*] Changed the wrapper. Added temporary initialization of dap_common. Made a DapServer object. And we changed the wrapping functions to work with them.
parent 9116d006
No related branches found
No related tags found
1 merge request!26Support 3689
......@@ -11,7 +11,34 @@ extern "C" {
dap_server_t *t_server;
typedef struct PyDapServer {
PyObject_HEAD
dap_server_t *t_server;
}PyDapServerObject;
static PyTypeObject dapServer_dapServerType = {
PyVarObject_HEAD_INIT(NULL, 0)
"libdap_server_core_python_module.DapServer", /* tp_name */
sizeof(PyDapServerObject), /* tp_basicsize */
0, /* tp_itemsize */
0, /* tp_dealloc */
0, /* tp_print */
0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_compare */
0, /* tp_repr */
0, /* tp_as_number */
0, /* tp_as_sequence */
0, /* tp_as_mapping */
0, /* tp_hash */
0, /* tp_call */
0, /* tp_str */
0, /* tp_getattro */
0, /* tp_setattro */
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT, /* tp_flags */
"DapServer objects", /* tp_doc */
};
#define LOG_TAG "libdap-server-core-python"
......@@ -31,7 +58,7 @@ static PyMethodDef DapServerCorePythonMethods[] = {
static struct PyModuleDef dapservercorepythonmodule = {
PyModuleDef_HEAD_INIT,
"libdap_python_module", /* name of module */
"libdap_server_core_python_module", /* name of module */
NULL, /* module documentation, may be NULL */
-1, /* size of per-interpreter state of the module,
or -1 if the module keeps state in global variables. */
......
......@@ -4,13 +4,14 @@
static PyObject *dap_server_core_init(PyObject *self, PyObject *args){
uint32_t l_thread_cnt;
size_t conn_t;
dap_common_init("CVNT", "CVNT.log");
if (!PyArg_ParseTuple(args, "I|n", &l_thread_cnt, &conn_t)){
return NULL;
}
int32_t result = dap_server_init(l_thread_cnt);
if ( result != 0 ) {
log_it( L_CRITICAL, "Can't init socket server module" );
}
}
dap_events_init(l_thread_cnt, conn_t);
dap_client_remote_init();
return PyLong_FromLong(result);
......@@ -23,7 +24,12 @@ static PyObject *dap_server_core_deinit(){
}
static PyObject *dap_server_core_loop(PyObject *self, PyObject *args){
int32_t result = dap_server_loop(t_server);
PyObject *obj_server;
if (!PyArg_ParseTuple(args, "O", &obj_server)){
return NULL;
}
int32_t result = dap_server_loop(((PyDapServerObject*)obj_server)->t_server);
log_it( result ? L_CRITICAL : L_NOTICE, "Server loop stopped with return code %d", ((PyDapServerObject*)obj_server)->t_server );
return PyLong_FromLong(result);
}
......@@ -36,11 +42,15 @@ static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){
}
if (type > 1)
return NULL;
t_server = dap_server_listen(addr, port, type);
return PyLong_FromLong(0);
PyObject *obj = _PyObject_New(&dapServer_dapServerType);
((PyDapServerObject*)obj)->t_server = dap_server_listen(addr, port, type);
return Py_BuildValue("O", obj);
}
PyMODINIT_FUNC PyInit_libdap_server_core_python_module(void){
dapServer_dapServerType.tp_new = PyType_GenericNew;
if (PyType_Ready(&dapServer_dapServerType) < 0)
return NULL;
return PyModule_Create(&dapservercorepythonmodule);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment