@@ -119,6 +119,10 @@ PyWrapper::PyWrapper() {
119119 _wrapperOnceExec = _obj.attr (" wrapperOnceExec" );
120120 _wrapperOnceExecAsync = _obj.attr (" wrapperOnceExecAsync" );
121121 _wrapperError = _obj.attr (" wrapperError" );
122+
123+ // 个性化
124+ _wrapperLoadRes = _obj.attr (" wrapperLoadRes" );
125+ _wrapperUnloadRes = _obj.attr (" wrapperUnloadRes" );
122126 // stream support
123127 _wrapperCreate = _obj.attr (" wrapperCreate" );
124128 _wrapperWrite = _obj.attr (" wrapperWrite" );
@@ -153,6 +157,8 @@ PyWrapper::~PyWrapper() {
153157 _wrapperCreate.release ();
154158 _wrapperWrite.release ();
155159 _wrapperRead.release ();
160+ _wrapperUnloadRes.release ();
161+ _wrapperLoadRes.release ();
156162 pybind11::gil_scoped_release release;
157163}
158164
@@ -174,6 +180,9 @@ void PyWrapper::ReloadWrapper() {
174180 _wrapperCreate = _obj.attr (" wrapperCreate" );
175181 _wrapperWrite = _obj.attr (" wrapperWrite" );
176182 _wrapperRead = _obj.attr (" wrapperRead" );
183+
184+ _wrapperLoadRes = _obj.attr (" wrapperLoadRes" );
185+ _wrapperUnloadRes = _obj.attr (" wrapperUnloadRes" );
177186 pybind11::gil_scoped_release release;
178187}
179188
@@ -240,15 +249,15 @@ int PyWrapper::wrapperFini() {
240249}
241250
242251int 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 ) {
244253 SetSidUsrTag (sid, usrTag);
245254 try {
246255 if (cb != nullptr ) {
247256 SetSidCallBack (cb, sid);
248257 }
249258 params[" sid" ] = sid;
250259 // 执行python exec 推理
251- py::object r = _wrapperOnceExec (params, reqData, usrTag);
260+ py::object r = _wrapperOnceExec (params, reqData, usrTag, psrId );
252261 // 此段根据python的返回 ,回写 respData
253262 Response *resp;
254263 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
334343
335344
336345int 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 ) {
338347 try {
339348 if (cb != nullptr ) {
340349 SetSidCallBack (cb, sid);
@@ -344,7 +353,7 @@ int PyWrapper::wrapperOnceExecAsync(const char *usrTag, std::map <std::string, s
344353 SetSidUsrTag (sid, usrTag);
345354 params[" sid" ] = sid;
346355 // 执行python exec 推理
347- py::object r = _wrapperOnceExecAsync (params, reqData, sid);
356+ py::object r = _wrapperOnceExecAsync (params, reqData, sid, psrId );
348357 // 此段根据python的返回 ,回写 respData
349358 spdlog::info (" start wrapperExecAsync cast python resp to c++ object, thread_id: {}, sid: {}" , gettid (), sid);
350359 ret = r.cast <int >();
@@ -398,15 +407,15 @@ int PyWrapper::wrapperSetTraceFunc(CtrlType type, wrapperTraceLog mc) {
398407
399408std::string
400409PyWrapper::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 ) {
402411 SessionCreateResponse *resp;
403412 SetSidCallBack (cb, sid);
404413 SetSidUsrTag (sid, usrTag);
405414
406415 try {
407416 py::gil_scoped_acquire acquire;
408417 // 此段根据python的返回 ,回写 respData
409- py::object r = _wrapperCreate (params, sid);
418+ py::object r = _wrapperCreate (params, sid, psrId );
410419 resp = r.cast <SessionCreateResponse *>();
411420 *errNum = resp->errCode ;
412421 if (*errNum != 0 ) {
@@ -525,6 +534,36 @@ int PyWrapper::wrapperExecFree(const char *usrTag) {
525534 return 0 ;
526535}
527536
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+
528567int PyWrapper::wrapperTest () {
529568 py::gil_scoped_acquire acquire;
530569 std::vector <py::dict> req;
0 commit comments