Skip to content

Commit 936e613

Browse files
committed
fix: base add libsqlite3-dev
1 parent 7a12717 commit 936e613

3 files changed

Lines changed: 50 additions & 18 deletions

File tree

pyWrapper.cpp

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,35 +34,35 @@ PYBIND11_EMBEDDED_MODULE(aiges_embed, module) {
3434
r.len = size;
3535

3636
})
37-
.def_readwrite("key", &ResponseData::key, py::return_value_policy::automatic_reference)
38-
.def_readwrite("data", &ResponseData::data, py::return_value_policy::automatic_reference)
39-
.def_readwrite("status", &ResponseData::status, py::return_value_policy::automatic_reference)
40-
.def_readwrite("len", &ResponseData::len, py::return_value_policy::automatic_reference)
41-
.def_readwrite("type", &ResponseData::type, py::return_value_policy::automatic_reference);
37+
.def_readwrite("key", &ResponseData::key, py::return_value_policy::copy)
38+
.def_readwrite("data", &ResponseData::data, py::return_value_policy::copy)
39+
.def_readwrite("status", &ResponseData::status, py::return_value_policy::copy)
40+
.def_readwrite("len", &ResponseData::len, py::return_value_policy::copy)
41+
.def_readwrite("type", &ResponseData::type, py::return_value_policy::copy);
4242

4343
py::class_<Response> response(module, "Response");
4444
response.def(py::init<>())
45-
.def_readwrite("list", &Response::list, py::return_value_policy::automatic_reference)
46-
.def_readwrite("error_code", &Response::errCode, py::return_value_policy::automatic_reference)
47-
.def("response_err", &Response::responseErr, py::return_value_policy::automatic_reference);
45+
.def_readwrite("list", &Response::list, py::return_value_policy::copy)
46+
.def_readwrite("error_code", &Response::errCode, py::return_value_policy::copy)
47+
.def("response_err", &Response::responseErr, py::return_value_policy::copy);
4848

4949
py::class_<DataListNode> dataListNode(module, "DataListNode");
5050
dataListNode.def(py::init<>())
51-
.def_readwrite("key", &DataListNode::key, py::return_value_policy::automatic_reference)
52-
.def_readwrite("data", &DataListNode::data, py::return_value_policy::automatic_reference)
53-
.def_readwrite("len", &DataListNode::len, py::return_value_policy::automatic_reference)
54-
.def_readwrite("status", &DataListNode::status, py::return_value_policy::automatic_reference)
55-
.def_readwrite("type", &DataListNode::type, py::return_value_policy::automatic_reference)
51+
.def_property_readonly("key", &DataListNode::get_key, py::return_value_policy::reference)
52+
.def_property_readonly("data", &DataListNode::get_data, py::return_value_policy::reference)
53+
.def_property_readonly("len", &DataListNode::get_len, py::return_value_policy::reference)
54+
.def_property_readonly("status", &DataListNode::get_status, py::return_value_policy::reference)
55+
.def_property_readonly("type", &DataListNode::get_type, py::return_value_policy::reference)
5656
.def("get_data", &DataListNode::get_data, py::return_value_policy::reference);
5757

5858
py::class_<DataListCls> dataListCls(module, "DataListCls");
5959
dataListCls.def(py::init<>())
60-
.def_readwrite("list", &DataListCls::list, py::return_value_policy::automatic_reference)
60+
.def_property_readonly("list", &DataListCls::get_list, py::return_value_policy::reference)
6161
.def("get", &DataListCls::get, py::return_value_policy::reference);
6262

6363
py::class_<SessionCreateResponse> sessionCreateResponse(module, "SessionCreateResponse");
6464
sessionCreateResponse.def(py::init<>())
65-
.def_readwrite("handle", &SessionCreateResponse::handle, py::return_value_policy::automatic_reference)
65+
.def_readwrite("handle", &SessionCreateResponse::handle, py::return_value_policy::copy)
6666
.def_readwrite("error_code", &SessionCreateResponse::errCode, py::return_value_policy::reference);
6767
}
6868

@@ -90,6 +90,21 @@ py::bytes DataListNode::get_data() {
9090
return data;
9191
}
9292

93+
std::string DataListNode::get_key() {
94+
return key;
95+
}
96+
97+
unsigned int DataListNode::get_len() {
98+
return len;
99+
}
100+
101+
int DataListNode::get_status() {
102+
return status;
103+
}
104+
105+
int DataListNode::get_type() {
106+
return type;
107+
}
93108
DataListNode *DataListCls::get(std::string key) {
94109
for (int idx = 0; idx < list.size(); idx++) {
95110
DataListNode *node = &list[idx];
@@ -99,6 +114,10 @@ DataListNode *DataListCls::get(std::string key) {
99114
}
100115
return nullptr;
101116
}
117+
std::vector <DataListNode> DataListCls::get_list() {
118+
return list;
119+
}
120+
102121

103122
PyWrapper::PyWrapper() {
104123
// 仅仅为了 加载下python lib库使 其部分函数可被导出使用
@@ -244,7 +263,7 @@ int PyWrapper::wrapperOnceExec(const char *usrTag, std::map <std::string, std::s
244263

245264
}
246265
SetSidUsrTag(sid, usrTag);
247-
266+
params["sid"] = sid;
248267
py::gil_scoped_acquire acquire;
249268
// 执行python exec 推理
250269
py::object r = _wrapperOnceExec(params, reqData, usrTag);
@@ -313,6 +332,10 @@ int PyWrapper::wrapperOnceExec(const char *usrTag, std::map <std::string, std::s
313332
spdlog::get("stderr_console")->error("error_already_set error: {}", e.what());
314333
return -1;
315334
}
335+
catch (const std::exception &e) {
336+
spdlog::get("stderr_console")->error("error_already_set error: {}", e.what());
337+
return -1;
338+
}
316339

317340
return 0;
318341

@@ -328,7 +351,7 @@ int PyWrapper::wrapperOnceExecAsync(const char *usrTag, std::map <std::string, s
328351
}
329352
int ret = 0;
330353
SetSidUsrTag(sid, usrTag);
331-
354+
params["sid"] = sid;
332355
py::gil_scoped_acquire acquire;
333356
// 执行python exec 推理
334357
py::object r = _wrapperOnceExecAsync(params, reqData, sid);

pyWrapper.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ class DataListNode {
9494
int type;
9595

9696
py::bytes get_data();
97+
98+
std::string get_key();
99+
100+
unsigned int get_len();
101+
102+
int get_status();
103+
104+
int get_type();
97105
};
98106

99107
// 请求的数据结构 用以和pybind11 交互
@@ -102,6 +110,7 @@ class DataListCls {
102110
std::vector <DataListNode> list;
103111

104112
DataListNode *get(std::string key);
113+
std::vector <DataListNode> get_list();
105114
};
106115

107116

wrapper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ int WrapperAPI wrapperExecFree(const char *usrTag, pDataList *respData) {
337337
pDataList ptr = *respData;
338338
while (ptr != NULL) {
339339
if (ptr->len > 0) {
340-
// free(ptr->data);
340+
free(ptr->data);
341341
ptr->data = NULL;
342342
}
343343
if (strlen(ptr->key) > 0) {

0 commit comments

Comments
 (0)