All Classes Namespaces Functions Variables Typedefs Enumerations Friends
remote_key.h
1 
5 #pragma once
6 #include <memory>
7 #include <string>
8 #include <utility>
9 #include <vector>
10 
11 #include <ucp/api/ucp.h>
12 
13 #include <ucxx/component.h>
14 #include <ucxx/endpoint.h>
15 #include <ucxx/memory_handle.h>
16 
17 namespace ucxx {
18 
19 typedef size_t SerializedRemoteKeyHash;
20 
30 class RemoteKey : public Component {
31  private:
32  ucp_rkey_h _remoteKey{nullptr};
33  void* _packedRemoteKey{
34  nullptr};
35  size_t _packedRemoteKeySize{0};
36  std::vector<char> _packedRemoteKeyVector{};
37  uint64_t _memoryBaseAddress{0};
38  size_t _memorySize{0};
39 
55  explicit RemoteKey(std::shared_ptr<MemoryHandle> memoryHandle);
56 
74  RemoteKey(std::shared_ptr<Endpoint> endpoint, SerializedRemoteKey serializedRemoteKey);
75 
91  void deserialize(const SerializedRemoteKey& serializedHeader);
92 
93  public:
115  friend std::shared_ptr<RemoteKey> createRemoteKeyFromMemoryHandle(
116  std::shared_ptr<MemoryHandle> memoryHandle);
117 
143  friend std::shared_ptr<RemoteKey> createRemoteKeyFromSerialized(
144  std::shared_ptr<Endpoint> endpoint, SerializedRemoteKey serializedRemoteKey);
145 
146  ~RemoteKey();
147 
163  [[nodiscard]] ucp_rkey_h getHandle();
164 
178  [[nodiscard]] size_t getSize() const;
179 
194  [[nodiscard]] uint64_t getBaseAddress();
195 
209  [[nodiscard]] SerializedRemoteKey serialize() const;
210 };
211 
212 } // namespace ucxx
A UCXX component class to prevent early destruction of parent object.
Definition: component.h:17
Component holding a UCP rkey (remote key).
Definition: remote_key.h:30
friend std::shared_ptr< RemoteKey > createRemoteKeyFromMemoryHandle(std::shared_ptr< MemoryHandle > memoryHandle)
Constructor for std::shared_ptr<ucxx::RemoteKey> from local memory handle.
ucp_rkey_h getHandle()
Get the underlying ucp_rkey_h handle.
size_t getSize() const
Get the size of the memory allocation.
friend std::shared_ptr< RemoteKey > createRemoteKeyFromSerialized(std::shared_ptr< Endpoint > endpoint, SerializedRemoteKey serializedRemoteKey)
Constructor for std::shared_ptr<ucxx::RemoteKey> from remote.
uint64_t getBaseAddress()
Get the base address of the memory allocation.
SerializedRemoteKey serialize() const
Serialize the remote key.
Definition: address.h:15