/* * 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( links.diagnostic ) ); } void application::safety::AddFailure::build( Environment & env ) { Local fd( diagnostic, *env.rholder.getShared( 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(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( diagnostic, *env.rholder.getShared( 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(env.static_object_ma, fi); env.statuses.add(links.stored, stored); } }