Skip to content

Commit a85667b

Browse files
committed
Helper functions
Signed-off-by: Aleksandr Bilkovskii <[email protected]>
1 parent 2daf58c commit a85667b

File tree

2 files changed

+38
-29
lines changed

2 files changed

+38
-29
lines changed

src/core/nixl_plugin_manager.cpp

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,11 @@ backendLoader(void *handle, const std::string_view &plugin_path) {
119119
}
120120
} // namespace
121121

122-
nixlTelemtryPluginHandle::nixlTelemtryPluginHandle(void *handle, nixlTelemetryPlugin *plugin)
122+
nixlTelemetryPluginHandle::nixlTelemetryPluginHandle(void *handle, nixlTelemetryPlugin *plugin)
123123
: nixlPluginHandle(handle),
124124
plugin_(plugin) {}
125125

126-
nixlTelemtryPluginHandle::~nixlTelemtryPluginHandle() {
126+
nixlTelemetryPluginHandle::~nixlTelemetryPluginHandle() {
127127
if (handle_) {
128128
// Call the plugin's cleanup function
129129
typedef void (*fini_func_t)();
@@ -140,23 +140,24 @@ nixlTelemtryPluginHandle::~nixlTelemtryPluginHandle() {
140140
}
141141

142142
std::unique_ptr<nixlTelemetryExporter>
143-
nixlTelemtryPluginHandle::createExporter(const nixlTelemetryExporterInitParams &init_params) const {
143+
nixlTelemetryPluginHandle::createExporter(
144+
const nixlTelemetryExporterInitParams &init_params) const {
144145
if (plugin_ && plugin_->create_exporter) {
145146
return plugin_->create_exporter(init_params);
146147
}
147148
return nullptr;
148149
}
149150

150151
const char *
151-
nixlTelemtryPluginHandle::getName() const {
152+
nixlTelemetryPluginHandle::getName() const {
152153
if (plugin_) {
153154
return plugin_->getName().data();
154155
}
155156
return "unknown";
156157
}
157158

158159
const char *
159-
nixlTelemtryPluginHandle::getVersion() const {
160+
nixlTelemetryPluginHandle::getVersion() const {
160161
if (plugin_) {
161162
return plugin_->getVersion().data();
162163
}
@@ -194,7 +195,7 @@ telemetryLoader(void *handle, const std::string_view &plugin_path) {
194195
return nullptr;
195196
}
196197

197-
return std::make_shared<const nixlTelemtryPluginHandle>(handle, plugin);
198+
return std::make_shared<const nixlTelemetryPluginHandle>(handle, plugin);
198199
}
199200
} // namespace
200201

@@ -398,7 +399,7 @@ nixlPluginManager::loadBackendPlugin(const std::string &plugin_name) {
398399
return nullptr;
399400
}
400401

401-
std::shared_ptr<const nixlTelemtryPluginHandle>
402+
std::shared_ptr<const nixlTelemetryPluginHandle>
402403
nixlPluginManager::loadTelemetryPlugin(const std::string &plugin_name) {
403404
lock_guard lg(lock);
404405

@@ -423,7 +424,7 @@ nixlPluginManager::loadTelemetryPlugin(const std::string &plugin_name) {
423424
auto plugin_handle = loadPluginFromPath(plugin_path, telemetryLoader);
424425
if (plugin_handle) {
425426
auto telemetry_plugin =
426-
std::dynamic_pointer_cast<const nixlTelemtryPluginHandle>(plugin_handle);
427+
std::dynamic_pointer_cast<const nixlTelemetryPluginHandle>(plugin_handle);
427428
loaded_telemetry_plugins_[plugin_name] = telemetry_plugin;
428429
return telemetry_plugin;
429430
}
@@ -433,15 +434,27 @@ nixlPluginManager::loadTelemetryPlugin(const std::string &plugin_name) {
433434
return nullptr;
434435
}
435436

436-
void
437-
nixlPluginManager::discoverBackendPlugin(const std::string &filename) {
438-
auto prefix_len = strlen(backendPluginPrefix);
439-
if (filename.size() < prefix_len + 1) return;
437+
namespace {
438+
static bool
439+
startsWith(const std::string &str, const std::string &prefix) {
440+
return str.size() >= prefix.size() && std::equal(prefix.begin(), prefix.end(), str.begin());
441+
}
442+
443+
static bool
444+
endsWith(const std::string &str, const std::string &suffix) {
445+
return str.size() >= suffix.size() && std::equal(suffix.rbegin(), suffix.rend(), str.rbegin());
446+
}
440447

441-
if (filename.substr(0, prefix_len) == backendPluginPrefix &&
442-
filename.substr(filename.size() - 3) == ".so") {
443-
std::string plugin_name = filename.substr(10, filename.size() - 13);
448+
static std::string
449+
extractPluginName(const std::string &filename, const std::string &prefix) {
450+
return filename.substr(prefix.size(), filename.size() - prefix.size() - 3);
451+
}
452+
} // namespace
444453

454+
void
455+
nixlPluginManager::discoverBackendPlugin(const std::string &filename) {
456+
if (startsWith(filename, backendPluginPrefix) && endsWith(filename, ".so")) {
457+
std::string plugin_name = extractPluginName(filename, backendPluginPrefix);
445458
auto plugin = loadBackendPlugin(plugin_name);
446459
if (plugin) {
447460
NIXL_INFO << "Discovered and loaded backend plugin: " << plugin_name;
@@ -451,12 +464,8 @@ nixlPluginManager::discoverBackendPlugin(const std::string &filename) {
451464

452465
void
453466
nixlPluginManager::discoverTelemetryPlugin(const std::string &filename) {
454-
auto prefix_len = strlen(telemetryPluginPrefix);
455-
if (filename.size() < prefix_len + 1) return;
456-
457-
if (filename.substr(0, prefix_len) == telemetryPluginPrefix &&
458-
filename.substr(filename.size() - 3) == ".so") {
459-
std::string plugin_name = filename.substr(10, filename.size() - 13);
467+
if (startsWith(filename, telemetryPluginPrefix) && endsWith(filename, ".so")) {
468+
std::string plugin_name = extractPluginName(filename, telemetryPluginPrefix);
460469

461470
auto plugin = loadTelemetryPlugin(plugin_name);
462471
if (plugin) {
@@ -522,7 +531,7 @@ nixlPluginManager::getBackendPlugin(const nixl_backend_t &plugin_name) {
522531
return nullptr;
523532
}
524533

525-
std::shared_ptr<const nixlTelemtryPluginHandle>
534+
std::shared_ptr<const nixlTelemetryPluginHandle>
526535
nixlPluginManager::getTelemetryPlugin(const nixl_telemetry_plugin_t &plugin_name) {
527536
lock_guard lg(lock);
528537
auto it = loaded_telemetry_plugins_.find(plugin_name);
@@ -607,7 +616,7 @@ nixlPluginManager::registerTelemetryStaticPlugin(const std::string_view &name,
607616
NIXL_INFO << "Loading static plugin: " << name;
608617
if (plugin) {
609618
// Register the loaded plugin
610-
auto plugin_handle = std::make_shared<const nixlTelemtryPluginHandle>(nullptr, plugin);
619+
auto plugin_handle = std::make_shared<const nixlTelemetryPluginHandle>(nullptr, plugin);
611620
loaded_telemetry_plugins_[name.data()] = plugin_handle;
612621
}
613622
}

src/core/plugin_manager.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ struct nixlTelemetryStaticPluginInfo {
8080
nixlTelemetryStaticPluginCreatorFunc createFunc;
8181
};
8282

83-
class nixlTelemtryPluginHandle : public nixlPluginHandle {
83+
class nixlTelemetryPluginHandle : public nixlPluginHandle {
8484
public:
85-
nixlTelemtryPluginHandle(void *handle, nixlTelemetryPlugin *plugin);
86-
~nixlTelemtryPluginHandle();
85+
nixlTelemetryPluginHandle(void *handle, nixlTelemetryPlugin *plugin);
86+
~nixlTelemetryPluginHandle();
8787

8888
std::unique_ptr<nixlTelemetryExporter>
8989
createExporter(const nixlTelemetryExporterInitParams &init_params) const;
@@ -116,7 +116,7 @@ class nixlPluginManager {
116116
loadBackendPlugin(const nixl_backend_t &plugin_name);
117117

118118
// Load a specific telemetry plugin
119-
std::shared_ptr<const nixlTelemtryPluginHandle>
119+
std::shared_ptr<const nixlTelemetryPluginHandle>
120120
loadTelemetryPlugin(const nixl_telemetry_plugin_t &plugin_name);
121121

122122
// Unload a telemetry plugin
@@ -132,7 +132,7 @@ class nixlPluginManager {
132132
getBackendPlugin(const nixl_backend_t &plugin_name);
133133

134134
// Get a telemetry plugin handle
135-
std::shared_ptr<const nixlTelemtryPluginHandle>
135+
std::shared_ptr<const nixlTelemetryPluginHandle>
136136
getTelemetryPlugin(const nixl_telemetry_plugin_t &plugin_name);
137137

138138
// Get all loaded backend plugin names
@@ -157,7 +157,7 @@ class nixlPluginManager {
157157
private:
158158
std::map<nixl_backend_t, std::shared_ptr<const nixlBackendPluginHandle>>
159159
loaded_backend_plugins_;
160-
std::map<nixl_telemetry_plugin_t, std::shared_ptr<const nixlTelemtryPluginHandle>>
160+
std::map<nixl_telemetry_plugin_t, std::shared_ptr<const nixlTelemetryPluginHandle>>
161161
loaded_telemetry_plugins_;
162162
std::vector<std::string> plugin_dirs_;
163163
std::vector<nixlBackendStaticPluginInfo> backend_static_plugins_;

0 commit comments

Comments
 (0)