@@ -119,6 +119,10 @@ PyWrapper::PyWrapper() {
119
119
_wrapperOnceExec = _obj.attr (" wrapperOnceExec" );
120
120
_wrapperOnceExecAsync = _obj.attr (" wrapperOnceExecAsync" );
121
121
_wrapperError = _obj.attr (" wrapperError" );
122
+
123
+ // 个性化
124
+ _wrapperLoadRes = _obj.attr (" wrapperLoadRes" );
125
+ _wrapperUnloadRes = _obj.attr (" wrapperUnloadRes" );
122
126
// stream support
123
127
_wrapperCreate = _obj.attr (" wrapperCreate" );
124
128
_wrapperWrite = _obj.attr (" wrapperWrite" );
@@ -153,6 +157,8 @@ PyWrapper::~PyWrapper() {
153
157
_wrapperCreate.release ();
154
158
_wrapperWrite.release ();
155
159
_wrapperRead.release ();
160
+ _wrapperUnloadRes.release ();
161
+ _wrapperLoadRes.release ();
156
162
pybind11::gil_scoped_release release;
157
163
}
158
164
@@ -174,6 +180,9 @@ void PyWrapper::ReloadWrapper() {
174
180
_wrapperCreate = _obj.attr (" wrapperCreate" );
175
181
_wrapperWrite = _obj.attr (" wrapperWrite" );
176
182
_wrapperRead = _obj.attr (" wrapperRead" );
183
+
184
+ _wrapperLoadRes = _obj.attr (" wrapperLoadRes" );
185
+ _wrapperUnloadRes = _obj.attr (" wrapperUnloadRes" );
177
186
pybind11::gil_scoped_release release;
178
187
}
179
188
@@ -240,15 +249,15 @@ int PyWrapper::wrapperFini() {
240
249
}
241
250
242
251
int PyWrapper::wrapperOnceExec (const char *usrTag, std::map <std::string, std::string> params, DataListCls reqData,
243
- pDataList *respData, std::string sid, wrapperCallback cb) {
252
+ pDataList *respData, std::string sid, wrapperCallback cb, unsigned int psrId ) {
244
253
SetSidUsrTag (sid, usrTag);
245
254
try {
246
255
if (cb != nullptr ) {
247
256
SetSidCallBack (cb, sid);
248
257
}
249
258
params[" sid" ] = sid;
250
259
// 执行python exec 推理
251
- py::object r = _wrapperOnceExec (params, reqData, usrTag);
260
+ py::object r = _wrapperOnceExec (params, reqData, usrTag, psrId );
252
261
// 此段根据python的返回 ,回写 respData
253
262
Response *resp;
254
263
spdlog::debug (" start cast python resp to c++ object, thread_id: {}, sid: {}" , gettid (), sid);
@@ -334,7 +343,7 @@ int PyWrapper::wrapperOnceExec(const char *usrTag, std::map <std::string, std::s
334
343
335
344
336
345
int PyWrapper::wrapperOnceExecAsync (const char *usrTag, std::map <std::string, std::string> params, DataListCls reqData,
337
- std::string sid, wrapperCallback cb) {
346
+ std::string sid, wrapperCallback cb, unsigned int psrId ) {
338
347
try {
339
348
if (cb != nullptr ) {
340
349
SetSidCallBack (cb, sid);
@@ -344,7 +353,7 @@ int PyWrapper::wrapperOnceExecAsync(const char *usrTag, std::map <std::string, s
344
353
SetSidUsrTag (sid, usrTag);
345
354
params[" sid" ] = sid;
346
355
// 执行python exec 推理
347
- py::object r = _wrapperOnceExecAsync (params, reqData, sid);
356
+ py::object r = _wrapperOnceExecAsync (params, reqData, sid, psrId );
348
357
// 此段根据python的返回 ,回写 respData
349
358
spdlog::info (" start wrapperExecAsync cast python resp to c++ object, thread_id: {}, sid: {}" , gettid (), sid);
350
359
ret = r.cast <int >();
@@ -398,15 +407,15 @@ int PyWrapper::wrapperSetTraceFunc(CtrlType type, wrapperTraceLog mc) {
398
407
399
408
std::string
400
409
PyWrapper::wrapperCreate (const char *usrTag, std::map <std::string, std::string> params, wrapperCallback cb,
401
- int *errNum, std::string sid) {
410
+ int *errNum, std::string sid, unsigned int psrId ) {
402
411
SessionCreateResponse *resp;
403
412
SetSidCallBack (cb, sid);
404
413
SetSidUsrTag (sid, usrTag);
405
414
406
415
try {
407
416
py::gil_scoped_acquire acquire;
408
417
// 此段根据python的返回 ,回写 respData
409
- py::object r = _wrapperCreate (params, sid);
418
+ py::object r = _wrapperCreate (params, sid, psrId );
410
419
resp = r.cast <SessionCreateResponse *>();
411
420
*errNum = resp->errCode ;
412
421
if (*errNum != 0 ) {
@@ -525,6 +534,36 @@ int PyWrapper::wrapperExecFree(const char *usrTag) {
525
534
return 0 ;
526
535
}
527
536
537
+ int PyWrapper::wrapperLoadRes (pDataList p, unsigned int resId) {
538
+ DataListCls perData;
539
+ if (dataNum > 0 ) {
540
+ for (int tmpIdx = 0 ; tmpIdx < dataNum; tmpIdx++) {
541
+ DataListNode item;
542
+ item.key = p->key ;
543
+
544
+ // 直接拷贝
545
+ size_t len = static_cast <size_t >(p->len );
546
+ item.data = py::bytes ((char *) (p->data ), len);
547
+
548
+ item.len = p->len ;
549
+ char t = static_cast <int >(p->type );
550
+ item.type = p->type ;
551
+ item.status = p->status ;
552
+ spdlog::debug (" reqDatatype :{},sid:{}" , p->type , sid);
553
+ perData.list .push_back (item);
554
+ p = p->next ;
555
+ }
556
+ }
557
+ py::gil_scoped_acquire acquire;
558
+ // 执行python exec 推理
559
+ py::object r = _wrapperLoadRes (perData, resId);
560
+ return 0 ;
561
+ }
562
+
563
+ int PyWrapper::wrapperUnloadRes (unsigned int resId) {
564
+ return 0 ;
565
+ }
566
+
528
567
int PyWrapper::wrapperTest () {
529
568
py::gil_scoped_acquire acquire;
530
569
std::vector <py::dict> req;
0 commit comments