@@ -262,6 +262,28 @@ Error ServiceManager::ValidateService(const ServiceData& service)
262
262
return ErrorEnum::eNone;
263
263
}
264
264
265
+ Error ServiceManager::RemoveService (const ServiceData& service)
266
+ {
267
+ if (auto err = RemoveServiceFromSystem (service); !err.IsNone ()) {
268
+ return AOS_ERROR_WRAP (err);
269
+ }
270
+
271
+ if (service.mState == ServiceStateEnum::eCached) {
272
+ auto [allocationId, err] = FormatAllocatorItemID (service);
273
+
274
+ if (!err.IsNone ()) {
275
+ LOG_ERR () << " Can't format allocator item ID: serviceID=" << service.mServiceID
276
+ << " , version=" << service.mVersion << " , err=" << err;
277
+ } else {
278
+ mServiceSpaceAllocator ->RestoreOutdatedItem (allocationId);
279
+ }
280
+ }
281
+
282
+ mServiceSpaceAllocator ->FreeSpace (service.mSize );
283
+
284
+ return ErrorEnum::eNone;
285
+ }
286
+
265
287
Error ServiceManager::RemoveItem (const String& id)
266
288
{
267
289
StaticArray<StaticString<Max (cServiceIDLen, cVersionLen)>, 2 > splitted;
@@ -277,16 +299,13 @@ Error ServiceManager::RemoveItem(const String& id)
277
299
278
300
mStorage ->GetServiceVersions (serviceID, *services);
279
301
280
- for (const auto & service : *services) {
281
- if (service.mVersion == version) {
282
- if (auto err = FS::RemoveAll (service.mImagePath ); !err.IsNone ()) {
283
- return AOS_ERROR_WRAP (err);
284
- }
302
+ auto it = services->FindIf ([&version](const ServiceData& service) { return service.mVersion == version; });
303
+ if (it == services->end ()) {
304
+ return AOS_ERROR_WRAP (ErrorEnum::eNotFound);
305
+ }
285
306
286
- if (auto err = RemoveService (service); !err.IsNone ()) {
287
- return AOS_ERROR_WRAP (err);
288
- }
289
- }
307
+ if (auto err = RemoveServiceFromSystem (*it); !err.IsNone ()) {
308
+ return AOS_ERROR_WRAP (err);
290
309
}
291
310
292
311
return ErrorEnum::eNone;
@@ -387,7 +406,7 @@ Error ServiceManager::RemoveDamagedServiceFolders(const Array<ServiceData>& serv
387
406
388
407
LOG_WRN () << " Service missing: imagePath=" << service.mImagePath ;
389
408
390
- if (auto err = RemoveService (service); !err.IsNone ()) {
409
+ if (auto err = RemoveServiceFromSystem (service); !err.IsNone ()) {
391
410
return AOS_ERROR_WRAP (err);
392
411
}
393
412
}
@@ -427,7 +446,7 @@ Error ServiceManager::RemoveOutdatedServices(const Array<ServiceData>& services)
427
446
428
447
LOG_DBG () << " Service outdated: serviceID=" << service.mServiceID << " , version=" << service.mVersion ;
429
448
430
- if (auto err = RemoveService (service); !err.IsNone ()) {
449
+ if (auto err = RemoveServiceFromSystem (service); !err.IsNone ()) {
431
450
return AOS_ERROR_WRAP (err);
432
451
}
433
452
@@ -444,28 +463,15 @@ Error ServiceManager::RemoveOutdatedServices(const Array<ServiceData>& services)
444
463
return ErrorEnum::eNone;
445
464
}
446
465
447
- Error ServiceManager::RemoveService (const ServiceData& service)
466
+ Error ServiceManager::RemoveServiceFromSystem (const ServiceData& service)
448
467
{
449
- LOG_INF () << " Remove service: serviceID=" << service.mServiceID << " , providerID =" << service.mProviderID
450
- << " , version= " << service. mVersion << " , path=" << service.mImagePath ;
468
+ LOG_DBG () << " Remove service: serviceID=" << service.mServiceID << " , version =" << service.mVersion
469
+ << " , path=" << service.mImagePath ;
451
470
452
471
if (auto err = FS::RemoveAll (service.mImagePath ); !err.IsNone ()) {
453
- err = AOS_ERROR_WRAP (err);
454
- }
455
-
456
- if (service.mState == ServiceStateEnum::eCached) {
457
- auto [allocationId, err] = FormatAllocatorItemID (service);
458
-
459
- if (!err.IsNone ()) {
460
- LOG_ERR () << " Can't format allocator item ID: serviceID=" << service.mServiceID
461
- << " , version=" << service.mVersion << " , err=" << err;
462
- } else {
463
- mServiceSpaceAllocator ->RestoreOutdatedItem (allocationId);
464
- }
472
+ return AOS_ERROR_WRAP (err);
465
473
}
466
474
467
- mServiceSpaceAllocator ->FreeSpace (service.mSize );
468
-
469
475
if (auto err = mStorage ->RemoveService (service.mServiceID , service.mVersion ); !err.IsNone ()) {
470
476
return AOS_ERROR_WRAP (err);
471
477
}
0 commit comments