memory_handle_builder.h
1 
5 #pragma once
6 
7 #include <cstddef>
8 #include <memory>
9 #include <utility>
10 
11 #include <ucs/memory/memory_type.h>
12 
13 namespace ucxx {
14 
15 class Context;
16 class MemoryHandle;
17 
25 class MemoryHandleBuilder final {
26  public:
33  MemoryHandleBuilder(std::shared_ptr<Context> context, size_t size);
34 
37 
45  MemoryHandleBuilder& operator=(MemoryHandleBuilder&&) noexcept;
46 
52  operator std::shared_ptr<MemoryHandle>();
53 
61 
69 
77  [[nodiscard]] std::shared_ptr<MemoryHandle> build();
78 
79  private:
80  struct Impl;
81  std::unique_ptr<Impl> _impl;
82 };
83 
84 } // namespace ucxx
Builder class for constructing std::shared_ptr<ucxx::MemoryHandle> objects.
Definition: memory_handle_builder.h:25
MemoryHandleBuilder & buffer(void *buffer)
Configure the buffer to map.
MemoryHandleBuilder(MemoryHandleBuilder &&) noexcept
Move constructor.
MemoryHandleBuilder(const MemoryHandleBuilder &other)
Copy constructor (deep-copies internal state).
MemoryHandleBuilder & operator=(const MemoryHandleBuilder &other)
Copy assignment operator (deep-copies internal state).
MemoryHandleBuilder(std::shared_ptr< Context > context, size_t size)
Constructor for MemoryHandleBuilder.
~MemoryHandleBuilder()
MemoryHandleBuilder destructor.
MemoryHandleBuilder & memoryType(ucs_memory_type_t memoryType)
Configure the mapped memory type.
std::shared_ptr< MemoryHandle > build()
Build and return the MemoryHandle.
Component holding a UCP memory handle.
Definition: memory_handle.h:28
Definition: address.h:16