36 lines
1.0 KiB
C++
36 lines
1.0 KiB
C++
/*
|
||
* MonotonicBufferResource.cpp
|
||
*
|
||
* Created on: 15 июн. 2020 г.
|
||
* 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)
|
||
{
|
||
}
|