IceStatusReader.cpp
Go to the documentation of this file.
1 #include "IceStatusReader.h"
2 
5 
6 using namespace ScenarioManager;
7 using namespace Exec;
8 using namespace Data_Structure;
9 
10 IceStatusReader::IceStatusReader(const IceGrid::AdminPrx admin) : admin(admin)
11 {
12 }
13 
15 {
16  ARMARX_CHECK_EXPRESSION(application);
17  fetch(application);
18  if (statusMap.count(GetApplicationId(application)))
19  {
20  return statusMap[GetApplicationId(application)];
21  }
22  else
23  {
24  return ApplicationStatus::Unknown;
25  }
26 }
27 
29 {
30  // ARMARX_WARNING << deactivateSpam(5, application->getName()) << "Getting status for " << application->getName();
31  ARMARX_CHECK_EXPRESSION(application);
33  auto appId = GetApplicationId(application);
34  try
35  {
36  IceGrid::ServerState state = admin->getServerState(appId);
37 
38  switch (state)
39  {
40  case IceGrid::ServerState::Active:
41  case IceGrid::ServerState::Deactivating:
42  case IceGrid::ServerState::Destroying:
43  statusMap[appId] = ApplicationStatus::Running;
44  break;
45  case IceGrid::ServerState::Inactive:
46  {
47  auto pid = admin->getServerPid(appId);
48  if (pid <= 0)
49  {
50  application->setPid(-1);
51  }
52  statusMap[appId] = ApplicationStatus::Inactive;
53  }
54  break;
55  case IceGrid::ServerState::Activating:
56  case IceGrid::ServerState::ActivationTimedOut:
57  case IceGrid::ServerState::Destroyed:
58  application->setPid(-1);
59  statusMap[appId] = ApplicationStatus::Stopped;
60  break;
61  default:
62  statusMap[appId] = ApplicationStatus::Stopped;
63  break;
64  }
65  }
66  catch (IceGrid::ServerNotExistException& ex)
67  {
68  application->setPid(-1);
69  statusMap[appId] = ApplicationStatus::Stopped;
70 
71  }
72  catch (IceGrid::NodeUnreachableException& ex)
73  {
74  statusMap[appId] = ApplicationStatus::Stopped;
75  }
76  catch (IceGrid::DeploymentException& ex)
77  {
78  application->setPid(-1);
79  statusMap[appId] = ApplicationStatus::Stopped;
80  }
81  catch (...)
82  {
83  ARMARX_WARNING_S << deactivateSpam(1) << "Unknown error while getting IceApplication state";
84  application->setPid(-1);
85  statusMap[appId] = ApplicationStatus::Stopped;
86  }
87 }
88 
90 {
91  return application->getScenario()->getName() + "_" + application->getName() +
92  (application->getInstanceName().empty() ? "" : "_") + application->getInstanceName() +
93  "Server";
94 }
95 
IceStatusReader.h
ScenarioManager::Data_Structure::ApplicationInstancePtr
std::shared_ptr< ApplicationInstance > ApplicationInstancePtr
Definition: ApplicationInstance.h:33
ScenarioManager::Exec::IceStatusReader::getStatus
virtual std::string getStatus(Data_Structure::ApplicationInstancePtr application)
Definition: IceStatusReader.cpp:14
KITProsthesis::ProsthesisState::Running
@ Running
Definition: KITProstheticHandInterface.ice:43
ScenarioManager::Exec::IceStatusReader::IceStatusReader
IceStatusReader(const IceGrid::AdminPrx admin)
Definition: IceStatusReader.cpp:10
ApplicationInstancePtr
std::shared_ptr< ScenarioManager::Data_Structure::ApplicationInstance > ApplicationInstancePtr
Definition: StopStrategy.h:7
deactivateSpam
SpamFilterDataPtr deactivateSpam(SpamFilterDataPtr const &spamFilter, float deactivationDurationSec, const std::string &identifier, bool deactivate)
Definition: Logging.cpp:72
ARMARX_WARNING_S
#define ARMARX_WARNING_S
Definition: Logging.h:206
ExpressionException.h
ARMARX_CHECK_EXPRESSION
#define ARMARX_CHECK_EXPRESSION(expression)
This macro evaluates the expression and if it turns out to be false it will throw an ExpressionExcept...
Definition: ExpressionException.h:73
ScenarioManager
Definition: Application.cpp:166
ScenarioManager::Exec::IceStatusReader::fetch
void fetch(Data_Structure::ApplicationInstancePtr application)
Definition: IceStatusReader.cpp:28
Logging.h
ScenarioManager::Exec::IceStatusReader::GetApplicationId
static std::string GetApplicationId(const ApplicationInstancePtr &application)
Definition: IceStatusReader.cpp:89