worker_builder.h
1 
5 #pragma once
6 
7 #include <memory>
8 #include <utility>
9 
10 #include <ucxx/buffer.h>
11 
12 namespace ucxx {
13 
14 // Forward declarations
15 class Context;
16 class Worker;
17 
18 namespace experimental {
19 
44 class WorkerBuilder final {
45  public:
51  explicit WorkerBuilder(std::shared_ptr<Context> context);
52 
57 
65  WorkerBuilder& operator=(WorkerBuilder&&) noexcept;
66 
75  operator std::shared_ptr<Worker>() const;
76 
83  WorkerBuilder& delayedSubmission(bool enable = true);
84 
91  WorkerBuilder& pythonFuture(bool enable = true);
92 
104  WorkerBuilder& requestAttributes(bool enable = true);
105 
113 
122  [[nodiscard]] std::shared_ptr<Worker> build() const;
123 
124  private:
125  struct Impl;
126  std::unique_ptr<Impl> _impl;
127 };
128 
157 inline WorkerBuilder createWorker(std::shared_ptr<Context> context)
158 {
159  return WorkerBuilder(std::move(context));
160 }
161 
162 } // namespace experimental
163 
164 } // namespace ucxx
Component encapsulating the UCP context.
Definition: context.h:35
Component encapsulating a UCP worker.
Definition: worker.h:51
Builder class for constructing std::shared_ptr<ucxx::Worker> objects.
Definition: worker_builder.h:44
WorkerBuilder & pythonFuture(bool enable=true)
Configure Python future support.
WorkerBuilder & requestAttributes(bool enable=true)
Configure request attributes querying.
~WorkerBuilder()
WorkerBuilder destructor.
WorkerBuilder & cudaBufferType(BufferType bufferType)
Configure the preferred buffer type for CUDA allocations.
WorkerBuilder & delayedSubmission(bool enable=true)
Configure delayed submission to the progress thread.
WorkerBuilder & operator=(const WorkerBuilder &other)
Copy assignment operator (deep-copies internal state).
WorkerBuilder(const WorkerBuilder &other)
Copy constructor (deep-copies internal state).
WorkerBuilder(WorkerBuilder &&) noexcept
Move constructor.
std::shared_ptr< Worker > build() const
Build and return the Worker.
WorkerBuilder(std::shared_ptr< Context > context)
Constructor for WorkerBuilder with required context.
Definition: address.h:16
std::shared_ptr< Worker > createWorker(std::shared_ptr< Context > context, const bool enableDelayedSubmission, const bool enableFuture)
Constructor of shared_ptr<ucxx::Worker> with parameters.
BufferType
The type of a buffer.
Definition: buffer.h:22