MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/application/basic/MonotonicBufferResourceInitializer.cpp

36 lines
1.0 KiB
C++
Raw Normal View History

/*
* 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)
{
}