11 #ifndef WRENCH_SERVICE_H
12 #define WRENCH_SERVICE_H
18 #include <wrench/simgrid_S4U_util/S4U_Daemon.h>
36 void start(std::shared_ptr<Service> this_service,
bool daemonize,
bool auto_restart);
91 Service(std::string
hostname, std::string process_name_prefix, std::string mailbox_name_prefix);
96 void setProperties(std::map<std::string, std::string> default_property_values,
97 std::map<std::string, std::string> overriden_property_values);
103 std::map<std::string, double> overriden_messagepayload_values);
129 if (Service::service_shared_ptr_map.find(
this) == Service::service_shared_ptr_map.end()) {
130 throw std::runtime_error(
"Service::getSharedPtr(): master shared_ptr to service not found! This should happen only "
131 "if the service has not been started, in which case this method shouldn't have been called");
133 auto shared_ptr = std::dynamic_pointer_cast<T>(Service::service_shared_ptr_map[
this]);
134 if (not shared_ptr) {
135 throw std::runtime_error(
"Service::getSharedPtr(): Invalid provided template");
148 for (
auto const &s : Service::service_shared_ptr_map) {
149 if (s.first->getName() ==
name) {
150 return std::dynamic_pointer_cast<T>(s.second);
159 static std::unordered_map<Service *, std::shared_ptr<Service>> service_shared_ptr_map;
161 bool shutting_down =
false;
163 static unsigned long num_terminated_services;
174 #endif //WRENCH_SERVICE_H
void setNetworkTimeoutValue(double value)
Sets the service's network timeout value.
Definition: Service.cpp:425
void start(std::shared_ptr< Service > this_service, bool daemonize, bool auto_restart)
Start the service.
Definition: Service.cpp:237
void setStateToDown()
Set the state of the service to DOWN.
Definition: Service.cpp:362
bool getPropertyValueAsBoolean(std::string)
Get a property of the Service as a boolean.
Definition: Service.cpp:209
void setProperty(std::string, std::string)
Set a property of the Service.
Definition: Service.cpp:90
~Service()
Destructor.
Definition: Service.cpp:70
static void increaseNumCompletedServicesCount()
Increase the completed service count.
Definition: Service.cpp:36
void setProperties(std::map< std::string, std::string > default_property_values, std::map< std::string, std::string > overriden_property_values)
Set default and user-defined properties.
Definition: Service.cpp:371
double getPropertyValueAsDouble(std::string)
Get a property of the Service as a double.
Definition: Service.cpp:139
std::string name
The service's name.
Definition: Service.h:115
void serviceSanityCheck()
Check whether the service is properly configured and running.
Definition: Service.cpp:408
void assertServiceIsUp()
Throws an exception if the service is not up.
Definition: Service.cpp:433
static void clearTrackedServices()
Forget all tracked services.
Definition: Service.cpp:43
double getMessagePayloadValue(std::string)
Get a message payload of the Service as a double.
Definition: Service.cpp:192
unsigned long getPropertyValueAsUnsignedLong(std::string)
Get a property of the Service as an unsigned long.
Definition: Service.cpp:165
bool isUp()
Returns true if the service is UP, false otherwise.
Definition: Service.cpp:355
std::shared_ptr< T > getSharedPtr()
Method to retrieve the shared_ptr to a service.
Definition: Service.h:128
void suspend()
Suspend the service.
Definition: Service.cpp:317
Service(std::string hostname, std::string process_name_prefix, std::string mailbox_name_prefix)
Constructor.
Definition: Service.cpp:80
double network_timeout
The time (in seconds) after which a service that doesn't send back a reply (control) message causes a...
Definition: Service.h:120
void setMessagePayloads(std::map< std::string, double > default_messagepayload_values, std::map< std::string, double > overriden_messagepayload_values)
Set default and user-defined message payloads.
Definition: Service.cpp:389
virtual void stop()
Synchronously stop the service (does nothing if the service is already stopped)
Definition: Service.cpp:269
std::string getPropertyValueAsString(std::string)
Get a property of the Service as a string.
Definition: Service.cpp:123
double getNetworkTimeoutValue()
Returns the service's network timeout value.
Definition: Service.cpp:416
std::map< std::string, double > messagepayload_list
The service's messagepayload list.
Definition: Service.h:112
A generic "running daemon" abstraction that serves as a basis for all simulated processes.
Definition: S4U_Daemon.h:32
static void cleanupTrackedServices()
Go through the tracked services and remove all entries with a refcount of 1!
Definition: Service.cpp:50
std::string hostname
The name of the host on which the daemon is running.
Definition: S4U_Daemon.h:51
A class that provides basic simulation methods. Once the simulation object has been explicitly or imp...
Definition: Simulation.h:46
static std::shared_ptr< T > getServiceByName(std::string name)
Method to retrieve the shared_ptr to a service based on the service's name (not efficient)
Definition: Service.h:147
static void assertServiceIsUp(std::shared_ptr< Service > s)
Assert for the service being up.
Definition: Service.h:85
A service that can be added to the simulation and that can be used by a WMS when executing a workflow...
Definition: Service.h:26
void setMessagePayload(std::string, double)
Set a message payload of the Service.
Definition: Service.cpp:105
std::string getHostname()
Get the name of the host on which the service is / will be running.
Definition: Service.cpp:347
std::map< std::string, std::string > property_list
The service's property list.
Definition: Service.h:109
void resume()
Resume the service.
Definition: Service.cpp:333