70 lines
2.0 KiB
C++
70 lines
2.0 KiB
C++
/*
|
|
* AddFailureInitializer.cpp
|
|
*
|
|
* Created on: 19 àâã. 2021 ã.
|
|
* Author: titov
|
|
*/
|
|
|
|
#include "AddFailure.hh"
|
|
#include "../../systemic/StatusLazyFast.hpp"
|
|
|
|
bool application::safety::AddFailure::input(
|
|
Environment & env ) {
|
|
|
|
return ( failure_status = env.statuses.get( links.condition ) )
|
|
and grab( diagnostic, env.rholder.getShared<FD>( links.diagnostic ) );
|
|
|
|
}
|
|
|
|
void application::safety::AddFailure::build(
|
|
Environment & env ) {
|
|
|
|
Local<FD> fd( diagnostic, *env.rholder.getShared<FD>( links.diagnostic ) );
|
|
|
|
const processing::failure::FaliureInterface & fi = fd->addFailure( *failure_status, setting.failure_id );
|
|
|
|
if( links.stored ) {
|
|
|
|
typedef systemic::detail::StatusLazyFast<
|
|
processing::failure::FaliureInterface,
|
|
&processing::failure::FaliureInterface::stored> StoredStatus;
|
|
|
|
StoredStatus * stored = memories::instance_object<StoredStatus>(env.static_object_ma, fi);
|
|
|
|
env.statuses.add(links.stored, stored);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
bool application::safety::AddFailureWithReset::input(
|
|
Environment & env ) {
|
|
|
|
return ( failure_status = env.statuses.get( links.condition ) )
|
|
and grab( reset, env.rholder.getShared< ResetFunction >( links.reset ) )
|
|
and grab( diagnostic, env.rholder.getShared< FD >( links.diagnostic ) );
|
|
|
|
}
|
|
|
|
void application::safety::AddFailureWithReset::build(
|
|
Environment & env ) {
|
|
|
|
Local<FD> fd( diagnostic, *env.rholder.getShared<FD>( links.diagnostic ) );
|
|
|
|
const processing::failure::FaliureInterface & fi = fd->addFailure( *failure_status, setting.failure_id, *reset );
|
|
|
|
if( links.stored ) {
|
|
|
|
typedef systemic::detail::StatusLazyFast<
|
|
processing::failure::FaliureInterface,
|
|
&processing::failure::FaliureInterface::stored> StoredStatus;
|
|
|
|
StoredStatus * stored = memories::instance_object<StoredStatus>(env.static_object_ma, fi);
|
|
|
|
env.statuses.add(links.stored, stored);
|
|
|
|
}
|
|
|
|
}
|