36 lines
1.0 KiB
C++
36 lines
1.0 KiB
C++
|
|
/*
|
|||
|
|
* MonotonicBufferResource.cpp
|
|||
|
|
*
|
|||
|
|
* Created on: 15 <EFBFBD><EFBFBD><EFBFBD>. 2020 <EFBFBD>.
|
|||
|
|
* Author: LeonidTitov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#include "MonotonicBufferResource.hh"
|
|||
|
|
#include <memory_resource>
|
|||
|
|
|
|||
|
|
bool application::basic::MonotonicBufferResource::input( Environment & env ) {
|
|||
|
|
|
|||
|
|
return grab( upstream_resource, env.rholder.getShared<std::pmr::memory_resource>( links.upstream ) );
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void application::basic::MonotonicBufferResource::build( Environment & env ) {
|
|||
|
|
|
|||
|
|
if(links.monotonic) {
|
|||
|
|
std::size_t buffer_size = setting.buffer_size;
|
|||
|
|
|
|||
|
|
void * buffer = upstream_resource->allocate( buffer_size, 4 );
|
|||
|
|
|
|||
|
|
std::pmr::monotonic_buffer_resource * monotonic = memories::instance_object<std::pmr::monotonic_buffer_resource>(env.static_object_ma, buffer, buffer_size, upstream_resource );
|
|||
|
|
|
|||
|
|
env.rholder.share<std::pmr::monotonic_buffer_resource>( *monotonic, links.monotonic );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
application::basic::MonotonicBufferResource::MonotonicBufferResource(
|
|||
|
|
const Links &links, const Setting &setting) : links(links), setting(setting)
|
|||
|
|
{
|
|||
|
|
}
|