Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/api/cpp/telemetry/telemetry_exporter.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _NIXL_SRC_API_CPP_TELEMETRY_TELEMETRY_EXPORTER_H
#define _NIXL_SRC_API_CPP_TELEMETRY_TELEMETRY_EXPORTER_H
#ifndef NIXL_SRC_API_CPP_TELEMETRY_TELEMETRY_EXPORTER_H
#define NIXL_SRC_API_CPP_TELEMETRY_TELEMETRY_EXPORTER_H

#include "nixl_types.h"
#include "telemetry_event.h"
Expand Down Expand Up @@ -69,4 +69,4 @@ class nixlTelemetryExporter {
const size_t maxEventsBuffered_;
};

#endif // _TELEMETRY_EXPORTER_H
#endif // NIXL_SRC_API_CPP_TELEMETRY_TELEMETRY_EXPORTER_H
55 changes: 32 additions & 23 deletions src/core/nixl_plugin_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,11 +119,11 @@ backendLoader(void *handle, const std::string_view &plugin_path) {
}
} // namespace

nixlTelemtryPluginHandle::nixlTelemtryPluginHandle(void *handle, nixlTelemetryPlugin *plugin)
nixlTelemetryPluginHandle::nixlTelemetryPluginHandle(void *handle, nixlTelemetryPlugin *plugin)
: nixlPluginHandle(handle),
plugin_(plugin) {}

nixlTelemtryPluginHandle::~nixlTelemtryPluginHandle() {
nixlTelemetryPluginHandle::~nixlTelemetryPluginHandle() {
if (handle_) {
// Call the plugin's cleanup function
typedef void (*fini_func_t)();
Expand All @@ -140,23 +140,24 @@ nixlTelemtryPluginHandle::~nixlTelemtryPluginHandle() {
}

std::unique_ptr<nixlTelemetryExporter>
nixlTelemtryPluginHandle::createExporter(const nixlTelemetryExporterInitParams &init_params) const {
nixlTelemetryPluginHandle::createExporter(
const nixlTelemetryExporterInitParams &init_params) const {
if (plugin_ && plugin_->create_exporter) {
return plugin_->create_exporter(init_params);
}
return nullptr;
}

const char *
nixlTelemtryPluginHandle::getName() const {
nixlTelemetryPluginHandle::getName() const {
if (plugin_) {
return plugin_->getName().data();
}
return "unknown";
}

const char *
nixlTelemtryPluginHandle::getVersion() const {
nixlTelemetryPluginHandle::getVersion() const {
if (plugin_) {
return plugin_->getVersion().data();
}
Expand Down Expand Up @@ -194,7 +195,7 @@ telemetryLoader(void *handle, const std::string_view &plugin_path) {
return nullptr;
}

return std::make_shared<const nixlTelemtryPluginHandle>(handle, plugin);
return std::make_shared<const nixlTelemetryPluginHandle>(handle, plugin);
}
} // namespace

Expand Down Expand Up @@ -398,7 +399,7 @@ nixlPluginManager::loadBackendPlugin(const std::string &plugin_name) {
return nullptr;
}

std::shared_ptr<const nixlTelemtryPluginHandle>
std::shared_ptr<const nixlTelemetryPluginHandle>
nixlPluginManager::loadTelemetryPlugin(const std::string &plugin_name) {
lock_guard lg(lock);

Expand All @@ -423,7 +424,7 @@ nixlPluginManager::loadTelemetryPlugin(const std::string &plugin_name) {
auto plugin_handle = loadPluginFromPath(plugin_path, telemetryLoader);
if (plugin_handle) {
auto telemetry_plugin =
std::dynamic_pointer_cast<const nixlTelemtryPluginHandle>(plugin_handle);
std::dynamic_pointer_cast<const nixlTelemetryPluginHandle>(plugin_handle);
loaded_telemetry_plugins_[plugin_name] = telemetry_plugin;
return telemetry_plugin;
}
Expand All @@ -433,15 +434,27 @@ nixlPluginManager::loadTelemetryPlugin(const std::string &plugin_name) {
return nullptr;
}

void
nixlPluginManager::discoverBackendPlugin(const std::string &filename) {
auto prefix_len = strlen(backendPluginPrefix);
if (filename.size() < prefix_len + 1) return;
namespace {
static bool
startsWith(const std::string &str, const std::string &prefix) {
return str.size() >= prefix.size() && std::equal(prefix.begin(), prefix.end(), str.begin());
}

static bool
endsWith(const std::string &str, const std::string &suffix) {
return str.size() >= suffix.size() && std::equal(suffix.rbegin(), suffix.rend(), str.rbegin());
}

if (filename.substr(0, prefix_len) == backendPluginPrefix &&
filename.substr(filename.size() - 3) == ".so") {
std::string plugin_name = filename.substr(10, filename.size() - 13);
static std::string
extractPluginName(const std::string &filename, const std::string &prefix) {
return filename.substr(prefix.size(), filename.size() - prefix.size() - 3);
}
} // namespace

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

void
nixlPluginManager::discoverTelemetryPlugin(const std::string &filename) {
auto prefix_len = strlen(telemetryPluginPrefix);
if (filename.size() < prefix_len + 1) return;

if (filename.substr(0, prefix_len) == telemetryPluginPrefix &&
filename.substr(filename.size() - 3) == ".so") {
std::string plugin_name = filename.substr(10, filename.size() - 13);
if (startsWith(filename, telemetryPluginPrefix) && endsWith(filename, ".so")) {
std::string plugin_name = extractPluginName(filename, telemetryPluginPrefix);

auto plugin = loadTelemetryPlugin(plugin_name);
if (plugin) {
Expand Down Expand Up @@ -522,7 +531,7 @@ nixlPluginManager::getBackendPlugin(const nixl_backend_t &plugin_name) {
return nullptr;
}

std::shared_ptr<const nixlTelemtryPluginHandle>
std::shared_ptr<const nixlTelemetryPluginHandle>
nixlPluginManager::getTelemetryPlugin(const nixl_telemetry_plugin_t &plugin_name) {
lock_guard lg(lock);
auto it = loaded_telemetry_plugins_.find(plugin_name);
Expand Down Expand Up @@ -607,7 +616,7 @@ nixlPluginManager::registerTelemetryStaticPlugin(const std::string_view &name,
NIXL_INFO << "Loading static plugin: " << name;
if (plugin) {
// Register the loaded plugin
auto plugin_handle = std::make_shared<const nixlTelemtryPluginHandle>(nullptr, plugin);
auto plugin_handle = std::make_shared<const nixlTelemetryPluginHandle>(nullptr, plugin);
loaded_telemetry_plugins_[name.data()] = plugin_handle;
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/core/plugin_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,10 @@ struct nixlTelemetryStaticPluginInfo {
nixlTelemetryStaticPluginCreatorFunc createFunc;
};

class nixlTelemtryPluginHandle : public nixlPluginHandle {
class nixlTelemetryPluginHandle : public nixlPluginHandle {
public:
nixlTelemtryPluginHandle(void *handle, nixlTelemetryPlugin *plugin);
~nixlTelemtryPluginHandle();
nixlTelemetryPluginHandle(void *handle, nixlTelemetryPlugin *plugin);
~nixlTelemetryPluginHandle();

std::unique_ptr<nixlTelemetryExporter>
createExporter(const nixlTelemetryExporterInitParams &init_params) const;
Expand Down Expand Up @@ -116,7 +116,7 @@ class nixlPluginManager {
loadBackendPlugin(const nixl_backend_t &plugin_name);

// Load a specific telemetry plugin
std::shared_ptr<const nixlTelemtryPluginHandle>
std::shared_ptr<const nixlTelemetryPluginHandle>
loadTelemetryPlugin(const nixl_telemetry_plugin_t &plugin_name);

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

// Get a telemetry plugin handle
std::shared_ptr<const nixlTelemtryPluginHandle>
std::shared_ptr<const nixlTelemetryPluginHandle>
getTelemetryPlugin(const nixl_telemetry_plugin_t &plugin_name);

// Get all loaded backend plugin names
Expand All @@ -157,7 +157,7 @@ class nixlPluginManager {
private:
std::map<nixl_backend_t, std::shared_ptr<const nixlBackendPluginHandle>>
loaded_backend_plugins_;
std::map<nixl_telemetry_plugin_t, std::shared_ptr<const nixlTelemtryPluginHandle>>
std::map<nixl_telemetry_plugin_t, std::shared_ptr<const nixlTelemetryPluginHandle>>
loaded_telemetry_plugins_;
std::vector<std::string> plugin_dirs_;
std::vector<nixlBackendStaticPluginInfo> backend_static_plugins_;
Expand Down
Loading