18#include "pw_async2/dispatcher.h"
19#include "pw_async2/poll.h"
20#include "pw_multibuf/allocator.h"
22namespace pw::multibuf {
24class MultiBufAllocationFuture;
30 : mbuf_allocator_(mbuf_allocator) {}
90 :
public MultiBufAllocator::MemoryAvailableDelegate {
96 contiguity_requirement_(kAllowDiscontiguous) {}
100 ContiguityRequirement contiguity_requirement)
103 desired_size_(desired_size),
104 contiguity_requirement_(contiguity_requirement) {}
110 void SetDesiredSize(
size_t min_size) {
111 SetDesiredSizes(min_size, min_size, kAllowDiscontiguous);
113 void SetDesiredSizes(
size_t min_size,
115 ContiguityRequirement contiguity_requirement);
120 size_t min_size()
const {
return min_size_; }
121 size_t desired_size()
const {
return desired_size_; }
122 bool needs_contiguous()
const {
123 return contiguity_requirement_ == kNeedsContiguous;
127 friend class MultiBufAllocator;
131 bool HandleMemoryAvailable(MultiBufAllocator& alloc,
132 size_t size_available,
133 size_t contiguous_size_available)
const override;
136 async2::Poll<std::optional<MultiBuf>> TryAllocate();
139 MultiBufAllocator* allocator_;
142 async2::Waker waker_;
153 size_t desired_size_;
154 ContiguityRequirement contiguity_requirement_;
Definition: dispatcher_base.h:52
Definition: allocator_async.h:90
MultiBufAllocator & allocator()
Returns the allocator associated with this future.
Definition: allocator_async.h:119
Definition: allocator_async.h:26
MultiBufAllocationFuture AllocateContiguousAsync(size_t min_size, size_t desired_size)
MultiBufAllocationFuture AllocateAsync(size_t size)
MultiBufAllocatorAsync(MultiBufAllocatorAsync &)=delete
`MultiBufAllocatorAsync is not copyable or movable.
MultiBufAllocationFuture AllocateAsync(size_t min_size, size_t desired_size)
MultiBufAllocationFuture AllocateContiguousAsync(size_t size)
Definition: allocator.h:54