diff --git a/TactilityKernel/include/tactility/service/service_instance.h b/TactilityKernel/include/tactility/service/service_instance.h index b8c528f3d..87dc1d681 100644 --- a/TactilityKernel/include/tactility/service/service_instance.h +++ b/TactilityKernel/include/tactility/service/service_instance.h @@ -86,19 +86,6 @@ void* service_instance_get_data(struct ServiceInstance* instance); */ ServiceState service_instance_get_state(struct ServiceInstance* instance); -/** - * @brief Try to claim usage for this service instance. Increases reference count internally. - * @param instance non-null service instance pointer - * @return true when the instance is started and ref count was increased. - */ -bool service_instance_try_get(struct ServiceInstance* instance); - -/** - * @brief Release a claim for usage of this service instance. Decreases reference count internally. - * @param instance non-null service instance pointer - */ -void service_instance_put(struct ServiceInstance* instance); - #ifdef __cplusplus } #endif diff --git a/TactilityKernel/include/tactility/service/service_manager.h b/TactilityKernel/include/tactility/service/service_manager.h index 69c1f6336..d4cfc74b7 100644 --- a/TactilityKernel/include/tactility/service/service_manager.h +++ b/TactilityKernel/include/tactility/service/service_manager.h @@ -31,6 +31,13 @@ extern "C" { */ error_t service_manager_remove(const char* id); +/** + * @brief Find a registered manifest by id. + * @param[in] id non-null service id + * @return the manifest, or NULL if not found + */ +const struct ServiceManifest* service_manager_find_manifest(const char* id); + /** * @brief Start a registered service by id. * @param[in] id non-null service id @@ -56,13 +63,6 @@ error_t service_manager_stop(const char* id); */ ServiceState service_manager_get_state(const char* id); -/** - * @brief Find a registered manifest by id. - * @param[in] id non-null service id - * @return the manifest, or NULL if not found - */ -const struct ServiceManifest* service_manager_find_manifest(const char* id); - /** * @brief Find the context of a running service by id. * @param[in] id non-null service id diff --git a/TactilityKernel/source/service/service_instance.cpp b/TactilityKernel/source/service/service_instance.cpp index 05e100927..768c78f32 100644 --- a/TactilityKernel/source/service/service_instance.cpp +++ b/TactilityKernel/source/service/service_instance.cpp @@ -12,7 +12,6 @@ struct ServiceInstanceInternal { Mutex mutex {}; ServiceState state = SERVICE_STATE_STOPPED; - uint32_t use_count = 0; }; extern "C" { @@ -84,22 +83,4 @@ const ServiceManifest* service_context_get_manifest(ServiceContext* context) { return service_instance_get_manifest(context); } -bool service_instance_try_get(struct ServiceInstance* instance) { - mutex_lock(&instance->internal->mutex); - bool acquired = instance->internal->state == SERVICE_STATE_STARTED; - if (acquired) { - instance->internal->use_count++; - } - mutex_unlock(&instance->internal->mutex); - return acquired; -} - -void service_instance_put(struct ServiceInstance* instance) { - mutex_lock(&instance->internal->mutex); - if (instance->internal->use_count > 0) { - instance->internal->use_count--; - } - mutex_unlock(&instance->internal->mutex); -} - } // extern "C" diff --git a/Tests/TactilityKernel/Source/ServiceTest.cpp b/Tests/TactilityKernel/Source/ServiceTest.cpp index 96e6456c8..5917e8cd2 100644 --- a/Tests/TactilityKernel/Source/ServiceTest.cpp +++ b/Tests/TactilityKernel/Source/ServiceTest.cpp @@ -68,35 +68,6 @@ TEST_CASE("ServiceInstance construction and destruction") { CHECK_EQ(last_destroy_context, &context_marker); } -TEST_CASE("service_instance_try_get/put reference counting") { - reset_counters(); - - static const ServiceManifest manifest = { - .id = "refcount-test", - .create_service = test_create_service, - .destroy_service = test_destroy_service - }; - - ServiceInstance instance = { .manifest = nullptr, .data = nullptr, .on_start = nullptr, .on_stop = nullptr, .internal = nullptr }; - CHECK_EQ(service_instance_construct(&instance, &manifest), ERROR_NONE); - - // Not started yet: claiming usage should fail - CHECK_FALSE(service_instance_try_get(&instance)); - - service_instance_set_state(&instance, SERVICE_STATE_STARTED); - - CHECK(service_instance_try_get(&instance)); - CHECK(service_instance_try_get(&instance)); - service_instance_put(&instance); - service_instance_put(&instance); - - // Extra put beyond the claimed count should not underflow - service_instance_put(&instance); - - service_instance_set_state(&instance, SERVICE_STATE_STOPPED); - CHECK_EQ(service_instance_destruct(&instance), ERROR_NONE); -} - TEST_CASE("service_manager_add rejects duplicate ids") { reset_counters();