packed_data.hpp
1 
6 #pragma once
7 
8 #include <rapidsmpf/memory/content_description.hpp>
9 #include <rapidsmpf/memory/packed_data.hpp>
10 #include <rapidsmpf/streaming/core/message.hpp>
11 
13 
21  return ContentDescription{
22  {{obj.data->mem_type(), obj.data->size}}, ContentDescription::Spillable::YES
23  };
24 }
25 
33 Message to_message(std::uint64_t sequence_number, std::unique_ptr<PackedData> chunk) {
34  auto cd = get_content_description(*chunk);
35  return Message{
36  sequence_number,
37  std::move(chunk),
38  cd,
39  [](Message const& msg, MemoryReservation& reservation) -> Message {
40  auto const& self = msg.get<PackedData>();
41  auto chunk = std::make_unique<PackedData>(self.copy(reservation));
42  auto cd = get_content_description(*chunk);
43  return Message{msg.sequence_number(), std::move(chunk), cd, msg.copy_cb()};
44  }
45  };
46 }
47 
48 } // namespace rapidsmpf::streaming
Description of an object's content.
Represents a reservation for future memory allocation.
Type-erased message wrapper around a payload.
Definition: message.hpp:27
T const & get() const
Reference to the payload.
Definition: message.hpp:161
constexpr std::uint64_t sequence_number() const noexcept
Returns the sequence number of this message.
Definition: message.hpp:136
ContentDescription get_content_description(PackedData const &obj)
Generate a content description for PackedData.
Definition: packed_data.hpp:20
Message to_message(std::uint64_t sequence_number, std::unique_ptr< PackedData > chunk)
Wrap PackedData into a Message.
Definition: packed_data.hpp:33
Bag of bytes with metadata suitable for sending over the wire.
Definition: packed_data.hpp:26
std::unique_ptr< Buffer > data
The GPU data.
Definition: packed_data.hpp:28