Program Listing for File SharedBufferManager.hpp
↰ Return to documentation for file (BackendLibfabric/SharedBufferManager.hpp)
#ifndef NETIO3BACKEND_BACKENDLIBFABRIC_SHAREDBUFFERMANAGER_HPP
#define NETIO3BACKEND_BACKENDLIBFABRIC_SHAREDBUFFERMANAGER_HPP
#include "DomainManager.hpp"
#include "SendBufferManager.hpp"
#include "SharedReceiveContextManager.hpp"
#include "ZeroCopyBufferManager.hpp"
#include "netio3-backend/Netio3Backend.hpp"
namespace netio3::libfabric {
class SharedBufferManager
{
public:
explicit SharedBufferManager(const NetworkConfig& config,
DomainManager& domain_manager,
BaseEventLoop* event_loop);
[[nodiscard]] const std::optional<SharedReceiveContextManager>& get_receive_context_manager() const
{
return m_receive_context_manager;
}
[[nodiscard]] std::optional<SharedReceiveContextManager>& get_receive_context_manager()
{
return m_receive_context_manager;
}
[[nodiscard]] const std::optional<SendBufferManager>& get_send_buffer_manager() const
{
return m_send_buffer_manager;
}
[[nodiscard]] std::optional<SendBufferManager>& get_send_buffer_manager()
{
return m_send_buffer_manager;
}
[[nodiscard]] const std::optional<ZeroCopyBufferManager>& get_zero_copy_buffer_manager() const
{
return m_zero_copy_buffer_manager;
}
[[nodiscard]] std::optional<ZeroCopyBufferManager>& get_zero_copy_buffer_manager()
{
return m_zero_copy_buffer_manager;
}
private:
[[nodiscard]] std::optional<SharedReceiveContextManager> create_shared_receive_context(
const NetworkConfig& config,
DomainManager& domain_manager,
BaseEventLoop* event_loop);
[[nodiscard]] std::optional<SendBufferManager> create_send_buffer_manager(
const NetworkConfig& config, DomainManager& domain_manager);
[[nodiscard]] std::optional<ZeroCopyBufferManager> create_zero_copy_buffer_manager(
const NetworkConfig& config, DomainManager& domain_manager);
std::optional<SharedReceiveContextManager> m_receive_context_manager{};
std::optional<SendBufferManager> m_send_buffer_manager{};
std::optional<ZeroCopyBufferManager> m_zero_copy_buffer_manager{};
};
} // namespace netio3::libfabric
#endif // NETIO3BACKEND_BACKENDLIBFABRIC_SHAREDBUFFERMANAGER_HPP