17 #include <boost/date_time/posix_time/posix_time.hpp> 34 list<string> & modelFiles);
41 int main(
int argc,
char * argv[]) {
42 list<string> modelFiles;
44 map<string,const ObservableComponent *> sortedComponents;
45 vector<const ObservableComponent *> components;
50 ParametrizedSynchronisation::ComponentVector vectorComp;
51 unsigned nbModel = modelFiles.size() - 1;
53 while (nbModel != 0) {
56 sortedComponents[component->
name()] = component;
57 modelFiles.pop_front();
60 throw (
Failure(
"dd-global-model"));
63 for(
auto & pair : sortedComponents)
65 components.push_back(pair.second);
66 vectorComp.push_back(pair.second);
71 throw (
Failure(
"dd-global-model"));
73 modelFiles.pop_front();
75 cout <<
"Start synchronising..." << flush;
77 cout <<
"done" << endl;
80 for (vector<const ObservableComponent *>::size_type i = 0;
81 i != components.size();
83 if (components[i] !=
nullptr) {
85 components[i] =
nullptr;
88 }
catch (exception & e) {
89 Diades::Utils::log< Diades::Utils::LgProcess>(
"global_model has failed, sorry for any inconvience: %1%")
92 for (vector<const ObservableComponent *>::size_type i = 0;
93 i != components.size();
95 if (components[i] !=
nullptr) {
97 components[i] =
nullptr;
110 cout <<
"Usage: global_model file1.des_comp file2.des_comp [file3.des_comp ...] sync.rules" << endl;
111 cout <<
" Compute the model file1||file2||..." << endl;
117 list<string> & modelFiles) {
124 string param = argv[1];
127 while (index < argc) {
129 string suffix =
getSuffix(
string(argv[index]));
130 if (suffix ==
"des_comp") {
132 modelFiles.push_back(
string(argv[index]));
135 if (suffix ==
"rules") {
136 modelFiles.push_back(
string(argv[index]));
150 string::size_type idx = name.rfind(
'.');
151 if (idx == string::npos) {
154 return name.substr(idx + 1);
161 vector<ComposableModel::ConstPointer> composableModels;
162 for (vector<const ObservableComponent *>::size_type i = 0;
163 i != components.size();
165 composableModels.push_back(
new ComposableModel(*components[i], rules));
168 ComposableModel synchronisation(composableModels, rules,
false, &result);
245 result.
setMask(synchronisedMask);
247 for (vector<const ObservableComponent *>::size_type i = 0;
248 i != components.size();
250 delete composableModels[i];
virtual bool exportDesCompModel(const string &filename) const
string getSuffix(const string &name)
void setMask(const ObservableMask &mask)
void setVerboseLevel(Diades::Utils::VerboseLevel level)
bool loadSynchronisationRules(const ParametrizedSynchronisation::ComponentVector &models, const string &filename, ParametrizedSynchronisation &sync)
static void destroyEvents()
An observable Component defined as a automaton.
virtual bool importDesCompModel(const string &filename)
void synchroniseModels(vector< const ObservableComponent *> &components, const ParametrizedSynchronisation &rules)
const string & name() const
int main(int argc, char *argv[])
void saveLog(Logger logger, ostream &os)
void readParameters(int argc, char *argv[], list< string > &modelFiles)