Program Listing for File Buffer.cpp

Return to documentation for file (BackendLibfabric/Buffer.cpp)

#include "Buffer.hpp"

#include <set>

std::vector<std::uint64_t> netio3::libfabric::HeaderBuffer::get_pending_sends()
{
  std::set<std::uint64_t> indices{};
  std::ranges::generate_n(std::inserter(indices, indices.end()), ZERO_COPY_NUM_HEADER_SLOTS, [i = 0]() mutable { return i++; });
  std::size_t index_available{};
  while(m_available_header_buffers.try_pop(index_available))
  {
    indices.erase(index_available);
  }
  std::vector<std::uint64_t> keys{};
  std::ranges::transform(
    indices, std::back_inserter(keys), [this](std::size_t index_not_available) {
      return m_keys[index_not_available];
    });
  return keys;
}