@@ -19,13 +19,22 @@ py::gil_scoped_release release; // 主线程中先释放release锁
19
19
PyWrapper *pyWrapper;
20
20
wrapperMeterCustom global_metric_cb;
21
21
wrapperTraceLog global_trace_cb;
22
+ // REsID 和 PERSID 映射维护
23
+ std::mutex RES_MUTEX;
24
+ std::map <unsigned int , std::string> RESID_MAP;
22
25
23
26
//
24
27
25
28
// const char *logDir = "./log";
26
29
// const char *wrapperLogFile = "./log/wrapper.log";
27
30
28
-
31
+ std::string GetPatchID (unsigned int perID) {
32
+ std::string rlt;
33
+ RES_MUTEX.lock ();
34
+ rlt = RESID_MAP[perID];
35
+ RES_MUTEX.unlock ();
36
+ return rlt;
37
+ }
29
38
void so_init (void ) {
30
39
printf (" libwrapper so init.\n " );
31
40
}
@@ -136,12 +145,42 @@ const char *WrapperAPI wrapperVersion() {
136
145
}
137
146
138
147
int WrapperAPI wrapperLoadRes (pDataList perData, unsigned int resId) {
139
- int ret = pyWrapper->wrapperLoadRes (perData, resId);
148
+ if (perData == NULL ) {
149
+ spdlog::debug (" wrapper LoadResource Error, perData Null" );
150
+ return -1 ;
151
+ }
152
+ if (perData->desc == NULL ) {
153
+ spdlog::debug (" wrapper LoadResource Error, perData Desc Null" );
154
+ return -1 ;
155
+ }
156
+ if (perData->desc ->key == NULL ) {
157
+ spdlog::debug (" wrapper LoadResource Error, perData Desc Key Null" );
158
+ return -1 ;
159
+ }
160
+ string patch_key = perData->desc ->key ;
161
+ string fixKey = " patch_id" ;
162
+
163
+ if (patch_key.compare (fixKey) != 0 ) {
164
+ spdlog::debug (" wrapper LoadResource Error, perData Desc Key Null" );
165
+ return -1 ;
166
+ }
167
+ if (perData->desc ->value == NULL ) {
168
+ spdlog::debug (" wrapper LoadResource Error, perData Desc PatchId Value Null" );
169
+ return -1 ;
170
+ }
171
+ string patch_Id = perData->desc ->value ;
172
+ RES_MUTEX.lock ();
173
+ RESID_MAP[resId] = patch_Id;
174
+ RES_MUTEX.unlock ();
175
+ int ret = pyWrapper->wrapperLoadRes (perData, patch_Id);
176
+
140
177
return ret;
141
178
}
142
179
143
180
int WrapperAPI wrapperUnloadRes (unsigned int resId) {
144
- int ret = pyWrapper->wrapperUnloadRes (resId);
181
+ std::string patchId;
182
+ patchId = GetPatchID (resId)
183
+ int ret = pyWrapper->wrapperUnloadRes (patchId);
145
184
return ret;
146
185
}
147
186
0 commit comments