File tree Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -194,6 +194,17 @@ class Module {
194194 return load_method (method_name, nullptr , event_tracer);
195195 }
196196
197+ /* *
198+ * Unload a specific method from the program.
199+ *
200+ * @param[in] method_name The name of the method to unload.
201+ *
202+ * @returns True if the method is unloaded, false if no-op.
203+ */
204+ inline bool unload_method (const std::string& method_name) {
205+ return methods_.erase (method_name);
206+ }
207+
197208 /* *
198209 * Get a method by it's name. Not recommended to use this method directly as
199210 * an end user. It's exposed to allow for composability of module in apis that
@@ -228,6 +239,15 @@ class Module {
228239 return load_forward (nullptr , event_tracer);
229240 }
230241
242+ /* *
243+ * Unload the 'forward' method from the program.
244+ *
245+ * @returns True if the 'forward' method is unloaded, false if no-op.
246+ */
247+ inline bool unload_forward () {
248+ return unload_method (" forward" );
249+ }
250+
231251 /* *
232252 * Checks if a specific method is loaded.
233253 *
Original file line number Diff line number Diff line change @@ -91,6 +91,25 @@ TEST_F(ModuleTest, TestLoadMethod) {
9191 EXPECT_TRUE (module .is_loaded ());
9292}
9393
94+ TEST_F (ModuleTest, TestUnloadMethod) {
95+ Module module (model_path_);
96+
97+ EXPECT_FALSE (module .is_method_loaded (" forward" ));
98+ const auto errorLoad = module .load_method (" forward" );
99+ EXPECT_EQ (errorLoad, Error::Ok);
100+ EXPECT_TRUE (module .is_method_loaded (" forward" ));
101+ // Unload method
102+ EXPECT_TRUE (module .unload_method (" forward" ));
103+ EXPECT_FALSE (module .is_method_loaded (" forward" ));
104+ // Try unload method again
105+ EXPECT_FALSE (module .unload_method (" forward" ));
106+ // Load method again
107+ const auto errorReload = module .load_method (" forward" );
108+ EXPECT_EQ (errorReload, Error::Ok);
109+ EXPECT_TRUE (module .is_method_loaded (" forward" ));
110+ EXPECT_TRUE (module .is_loaded ());
111+ }
112+
94113TEST_F (ModuleTest, TestLoadNonExistentMethod) {
95114 Module module (model_path_);
96115
You can’t perform that action at this time.
0 commit comments