18#include "pw_async2/dispatcher.h"
19#include "pw_async2/poll.h"
20#include "pw_multibuf/allocator.h"
21#include "pw_multibuf/config.h"
23namespace pw::multibuf {
27class MultiBufAllocationFuture;
33 : mbuf_allocator_(mbuf_allocator) {}
93 :
public MultiBufAllocator::MemoryAvailableDelegate {
96 : allocator_(&allocator),
99 contiguity_requirement_(kAllowDiscontiguous) {}
103 ContiguityRequirement contiguity_requirement)
104 : allocator_(&allocator),
106 desired_size_(desired_size),
107 contiguity_requirement_(contiguity_requirement) {}
113 void SetDesiredSize(
size_t min_size) {
114 SetDesiredSizes(min_size, min_size, kAllowDiscontiguous);
116 void SetDesiredSizes(
size_t min_size,
118 ContiguityRequirement contiguity_requirement);
123 size_t min_size()
const {
return min_size_; }
124 size_t desired_size()
const {
return desired_size_; }
125 bool needs_contiguous()
const {
126 return contiguity_requirement_ == kNeedsContiguous;
130 friend class MultiBufAllocator;
134 bool HandleMemoryAvailable(MultiBufAllocator& alloc,
135 size_t size_available,
136 size_t contiguous_size_available)
const override;
139 async2::PollOptional<MultiBuf> TryAllocate();
142 MultiBufAllocator* allocator_;
145 async2::Waker waker_;
156 size_t desired_size_;
157 ContiguityRequirement contiguity_requirement_;
Definition: allocator_async.h:93
MultiBufAllocator & allocator()
Returns the allocator associated with this future.
Definition: allocator_async.h:122
Definition: allocator_async.h:29
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:57