←
Documentation
ADS-IDAC Engine
5.0.0
BranchAction.cpp
Go to the documentation of this file.
1
// BranchAction.cpp: implementation of the BranchAction class.
2
//
4
5
#include "
BranchAction.h
"
6
#include <sstream>
7
#include "../Global/ConvertToString.h"
8
#include "../ControlPanel/ControlPanel.h"
9
#include <boost/serialization/export.hpp>
10
#include "../Global/SimulationContext.h"
11
#include <boost/archive/binary_oarchive.hpp>
12
#include <boost/archive/binary_iarchive.hpp>
13
BOOST_CLASS_EXPORT_IMPLEMENT(
BranchAction
)
14
using namespace
std;
15
16
18
// Construction/Destruction
20
21
BranchAction::BranchAction
() {
22
action_time
= -1.0;
23
}
24
25
BranchAction::~BranchAction
() {
26
27
}
28
void
BranchAction::setActionTime
(
double
x) {
action_time
= x; }
29
double
BranchAction::getActionTime
() {
return
action_time
; }
30
void
BranchAction::copyBranchAction
(
BranchAction
&_bap) {
31
this->
copyCommunication
(_bap);
32
this->
copyTimerAndProbability
(_bap);
33
this->
copyDecisionAction
(_bap);
34
this->
copyStringContainer
(_bap);
35
action_time
= _bap.
getActionTime
();
36
}
37
string
BranchAction::translateMessage
() {
38
map<string, SystemControl *>::iterator control_map_itr;
39
SystemControl
*sc_ptr;
40
string
str, str1, str2,
message
;
41
int
state =
sim::None
;
42
double
contrl_value;
43
str =
"ACTION: Sender: "
;
44
str +=
g_sim
.
Translator
.
getString
(this->
getSender
());
45
str +=
"; Receiver: "
;
46
str +=
g_sim
.
Translator
.
getString
(this->
getIntendedReceiver
());
47
str +=
"; Action: "
;
48
str += this->
getActionName
();
49
message = this->
getMessage
();
50
str2 =
g_sim
.
Translator
.
removeQuotationAndSpace
(
message
);
51
//
52
// determine if control is permanently failed
53
control_map_itr =
g_sim
.
Indicator
.
controls
.
control_map
.find(this->
getActionName
());
54
if
(control_map_itr !=
g_sim
.
Indicator
.
controls
.
control_map
.end()) {
55
sc_ptr = control_map_itr->second;
56
state = sc_ptr->
getFunctionalState
();
57
}
58
if
(this->
getActionName
().substr(0, 7) ==
"WAITING"
) {
59
str +=
" ; "
;
60
str += str2;
61
}
else
if
(state ==
sim::State::FailedP
) {
62
str +=
" ; "
;
63
str += str2;
64
str +=
" - Permanent Failure"
;
65
}
else
{
66
contrl_value = this->
getControlValue
();
67
str1 = std::to_string(contrl_value);
68
str +=
" ; Intended_Receiver:"
;
69
str +=
g_sim
.
Translator
.
getString
(this->
getIntendedReceiver
());
70
str +=
"; Control_value:"
;
71
str += str1;
72
str +=
" ; "
;
73
str += str2;
74
}
75
str +=
"; New Probability: "
;
76
std::ostringstream streamObj;
77
streamObj << this->
getProbability
();
78
str += streamObj.str();
79
return
str;
80
}
81
void
BranchAction::saveInfoToFile
(ostream &fout) {
82
string
str, str1;
83
double
value;
84
fout <<
' '
<< this->
getSender
() <<
' '
<<
sim::Action::Direct
<<
' '
<<
sim::None
<<
' '
<< this->
getActionName
() <<
' '
85
<< this->
getProbability
() <<
' '
86
<< this->
getTimeOfCommunication
() <<
' '
<< this->
getRemainingTime
() <<
' '
<< this->
getControlValue
() <<
" 0 "
;
87
str1 =
g_sim
.
Translator
.
removeQuotationAndSpace
(this->
getMessage
());
88
if
(this->
getActionName
().substr(0, 7) !=
"WAITING"
) {
89
value = this->
getControlValue
();
90
str = to_string(value);
91
fout <<
'"'
<<
"Intended_Receiver:"
<<
g_sim
.
Translator
.
getString
(this->
getIntendedReceiver
()) <<
";Control_value:"
<< str
92
<<
';'
<< str1 <<
'"'
<<
'\n'
;
93
}
else
{
94
95
fout <<
'"'
<< str1 <<
'"'
<<
'\n'
;
96
}
97
}
98
void
BranchAction::saveBranchActionToFile
(ofstream &fout) {
99
this->
saveDecisionActionToFile
(fout);
100
this->
saveTimerAndProbabilityToFile
(fout);
101
this->
saveCommunicationToFile
(fout);
102
this->
saveStringContainerToFile
(fout);
103
fout <<
action_time
<<
'\n'
;
104
}
105
void
BranchAction::retrieveBranchActionFromFile
(ifstream &fin) {
106
this->
retrieveDecisionActionFromFile
(fin);
107
this->
retrieveTimerAndProbabilityFromFile
(fin);
108
this->
retrieveCommunicationFromFile
(fin);
109
this->
retrieveStringContainerFromFile
(fin);
110
fin >>
action_time
;
111
}
BranchAction.h
g_sim
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
Definition:
SimulationContext.cpp:7
BranchAction
Definition:
BranchAction.h:29
BranchAction::copyBranchAction
void copyBranchAction(BranchAction &)
Definition:
BranchAction.cpp:30
BranchAction::saveBranchActionToFile
void saveBranchActionToFile(std::ofstream &)
Definition:
BranchAction.cpp:98
BranchAction::translateMessage
std::string translateMessage()
Definition:
BranchAction.cpp:37
BranchAction::~BranchAction
virtual ~BranchAction()
Definition:
BranchAction.cpp:25
BranchAction::action_time
double action_time
Definition:
BranchAction.h:52
BranchAction::BranchAction
BranchAction()
Definition:
BranchAction.cpp:21
BranchAction::retrieveBranchActionFromFile
void retrieveBranchActionFromFile(std::ifstream &)
Definition:
BranchAction.cpp:105
BranchAction::setActionTime
void setActionTime(double)
Definition:
BranchAction.cpp:28
BranchAction::getActionTime
double getActionTime()
Definition:
BranchAction.cpp:29
BranchAction::saveInfoToFile
void saveInfoToFile(std::ostream &)
Definition:
BranchAction.cpp:81
Communication::getSender
int getSender()
Definition:
Communication.cpp:43
Communication::getTimeOfCommunication
double getTimeOfCommunication()
Definition:
Communication.cpp:47
Communication::saveCommunicationToFile
void saveCommunicationToFile(std::ofstream &)
Definition:
Communication.cpp:60
Communication::getIntendedReceiver
int getIntendedReceiver()
Definition:
Communication.cpp:44
Communication::retrieveCommunicationFromFile
void retrieveCommunicationFromFile(std::ifstream &)
Definition:
Communication.cpp:65
Communication::copyCommunication
void copyCommunication(Communication &)
Definition:
Communication.cpp:52
ControlElement::getControlValue
double getControlValue()
Definition:
ControlElement.cpp:64
ControlPanelControl::control_map
std::map< std::string, SystemControl * > control_map
Definition:
ControlPanelControl.h:44
ControlPanel::controls
ControlPanelControl controls
Definition:
ControlPanel.h:54
ConvertToString::removeQuotationAndSpace
std::string removeQuotationAndSpace(std::string)
Definition:
ConvertToString.cpp:198
ConvertToString::getString
std::string getString(int) const
Definition:
ConvertToString.cpp:190
DecisionAction::getActionName
std::string getActionName()
Definition:
DecisionAction.cpp:30
DecisionAction::retrieveDecisionActionFromFile
void retrieveDecisionActionFromFile(std::ifstream &)
Definition:
DecisionAction.cpp:79
DecisionAction::copyDecisionAction
void copyDecisionAction(DecisionAction &)
Definition:
DecisionAction.cpp:31
DecisionAction::saveDecisionActionToFile
void saveDecisionActionToFile(std::ofstream &)
Definition:
DecisionAction.cpp:74
Probability::getProbability
double getProbability()
Definition:
Probability.cpp:27
StringContainer::saveStringContainerToFile
void saveStringContainerToFile(std::ofstream &)
Definition:
StringContainer.cpp:33
StringContainer::message
std::string message
Definition:
StringContainer.h:35
StringContainer::getMessage
std::string getMessage()
Definition:
StringContainer.cpp:29
StringContainer::copyStringContainer
void copyStringContainer(StringContainer &)
Definition:
StringContainer.cpp:30
StringContainer::retrieveStringContainerFromFile
void retrieveStringContainerFromFile(std::ifstream &)
Definition:
StringContainer.cpp:38
SystemControl
Definition:
SystemControl.h:20
SystemControl::getFunctionalState
int getFunctionalState()
Definition:
SystemControl.cpp:37
TimerAndProbability::saveTimerAndProbabilityToFile
void saveTimerAndProbabilityToFile(std::ofstream &)
Definition:
TimerAndProbability.cpp:34
TimerAndProbability::copyTimerAndProbability
void copyTimerAndProbability(TimerAndProbability &)
Definition:
TimerAndProbability.cpp:30
TimerAndProbability::retrieveTimerAndProbabilityFromFile
void retrieveTimerAndProbabilityFromFile(std::ifstream &)
Definition:
TimerAndProbability.cpp:38
Timer::getRemainingTime
double getRemainingTime()
Definition:
Timer.cpp:31
sim::Action::Direct
constexpr int Direct
Definition:
SimConstants.h:202
sim::State::FailedP
constexpr int FailedP
Definition:
SimConstants.h:115
sim::None
constexpr int None
Definition:
SimConstants.h:75
SimulationContext::Indicator
ControlPanel Indicator
Control room panel state.
Definition:
SimulationContext.h:42
SimulationContext::Translator
ConvertToString Translator
Parameter name/value conversion.
Definition:
SimulationContext.h:52
src
ADSIDAC
Branch
BranchAction.cpp
Generated by
1.9.4