Skip to content

Commit 7a12717

Browse files
committed
feat: add metric
1 parent 891cf0b commit 7a12717

3 files changed

Lines changed: 19 additions & 10 deletions

File tree

pyWrapper.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@ const char *wrapperFileClass = "wrapper.class";
1111
const char *WrapperFile = "wrapper";
1212
const char *WrapperClass = "Wrapper";
1313
const char *PythonSo = "libpython3.so";
14+
wrapperMeterCustom g_metric_cb;
1415

1516
std::mutex RECORD_MUTEX;
1617
std::map <std::string, std::string> SID_RECORD;
1718
std::map <std::string, wrapperCallback> SID_CB;
1819
std::map<std::string, const char *> SID_USRTAG;
1920

2021
PYBIND11_EMBEDDED_MODULE(aiges_embed, module) {
21-
module.def("callback_metric", &PyWrapper::callbackMetric, py::return_value_policy::automatic_reference);
22+
module.def("callback_metric", &callbackMetric, py::return_value_policy::automatic_reference);
2223
module.def("callback", &callBack, py::return_value_policy::automatic_reference);
2324
py::class_<ResponseData> responseData(module, "ResponseData");
2425
responseData.def(py::init<>())
@@ -246,7 +247,7 @@ int PyWrapper::wrapperOnceExec(const char *usrTag, std::map <std::string, std::s
246247

247248
py::gil_scoped_acquire acquire;
248249
// 执行python exec 推理
249-
py::object r = _wrapperOnceExec(params, reqData);
250+
py::object r = _wrapperOnceExec(params, reqData, usrTag);
250251
// 此段根据python的返回 ,回写 respData
251252
Response *resp;
252253
spdlog::debug("start cast python resp to c++ object, thread_id: {}, sid: {}", gettid(), sid);
@@ -370,7 +371,7 @@ std::string PyWrapper::wrapperError(int err) {
370371

371372
int PyWrapper::wrapperSetCtrl(CtrlType type, wrapperMeterCustom mc) {
372373
if (type == CTMeterCustom) {
373-
metric_cb = mc;
374+
g_metric_cb = mc;
374375
}
375376
return 0;
376377
}
@@ -544,8 +545,9 @@ int PyWrapper::wrapperTest() {
544545

545546
}
546547

547-
int PyWrapper::callbackMetric(const void *usrTag, const char *meterKey, int count) {
548-
return metric_cb(usrTag, meterKey, count);
548+
int callbackMetric(const char *usrTag, const char *meterKey, int count) {
549+
printf("%s, %s, %d\n", usrTag, meterKey, count);
550+
return g_metric_cb(usrTag, meterKey, count);
549551
}
550552

551553
int callBack(Response *resp, std::string sid) {

pyWrapper.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,6 @@ class PyWrapper {
145145
int wrapperExecFree(const char *usrTag);
146146

147147
int wrapperTest();
148-
int callbackMetric(const void *usrTag, const char *meterKey, int count);
149-
150148

151149
void setCallBack(wrapperCallback cb);
152150

@@ -180,6 +178,7 @@ void DelHandleSid(char *handle);
180178

181179
int callBack(Response *respData, std::string);
182180

181+
int callbackMetric(const char *usrTag, const char *meterKey, int count);
183182

184183
void SetSidCallBack(wrapperCallback cb, std::string sid);
185184

wrapper.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ py::scoped_interpreter python; // 全局解释器
1717
py::gil_scoped_release release; // 主线程中先释放release锁
1818
// 全局pywrapper类实例
1919
PyWrapper *pyWrapper;
20+
wrapperMeterCustom global_metric_cb;
21+
2022
//
2123

2224
//const char *logDir = "./log";
@@ -105,6 +107,10 @@ int WrapperAPI wrapperInit(pConfig cfg) {
105107

106108
setLog(loglvl);
107109
printf("WrapperInit: 当前线程ID: %d \n", gettid());
110+
if (global_metric_cb != NULL) {
111+
pyWrapper->wrapperSetCtrl(CTMeterCustom, global_metric_cb);
112+
}
113+
108114
ret = pyWrapper->wrapperInit(config);
109115
return ret;
110116
}
@@ -316,10 +322,12 @@ int WrapperAPI wrapperSetCtrl(CtrlType type, void *func) {
316322
if (type == CTMeterCustom) {
317323
if (func == NULL) {
318324
printf("calculate function is null\n");
325+
return 0;
319326
}
327+
global_metric_cb = (wrapperMeterCustom) func;
320328
// 这里实际是往 python注册 wrapperMeterCustom 函数指针
321-
int ret = pyWrapper->wrapperSetCtrl(type, (wrapperMeterCustom) func);
322-
return ret;
329+
//int ret = pyWrapper->wrapperSetCtrl(type, (wrapperMeterCustom*) func);
330+
return 0;
323331
}
324332
return 0;
325333
}
@@ -418,4 +426,4 @@ wrapperExecAsync(const char *usrTag, pParamList params, pDataList reqData, wrapp
418426
return ret;
419427
}
420428

421-
const char *WrapperAPI wrapperDebugInfo(const void *handle) { return NULL; }
429+
const char *WrapperAPI wrapperDebugInfo(const void *handle) { return NULL; }

0 commit comments

Comments
 (0)