Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
Main.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4
6
7 /*
8 ********************************************************************************
9 ********************************* Service::Main ********************************
10 ********************************************************************************
11 */
12 inline const Main::IServiceIntegrationRep& Main::GetServiceRep_ () const
13 {
14 RequireNotNull (fServiceRep_);
15 return *fServiceRep_;
16 }
17 inline Main::IServiceIntegrationRep& Main::GetServiceRep_ ()
18 {
19 RequireNotNull (fServiceRep_);
20 return *fServiceRep_;
21 }
22 inline const Main::IApplicationRep& Main::GetAppRep_ () const
23 {
24 RequireNotNull (GetServiceRep_ ()._GetAttachedAppRep ());
25 return *GetServiceRep_ ()._GetAttachedAppRep ();
26 }
27 inline Main::IApplicationRep& Main::GetAppRep_ ()
28 {
29 RequireNotNull (GetServiceRep_ ()._GetAttachedAppRep ());
30 return *GetServiceRep_ ()._GetAttachedAppRep ();
31 }
33 {
34 return GetServiceRep_ ()._GetSupportedFeatures ();
35 }
36 inline void Main::Install ()
37 {
38 Debug::TraceContextBumper ctx{"Stroika::Frameworks::Service::Main::Install"};
39 static constexpr Execution::Activity kInstallingService_{"installing service"sv};
40 Execution::DeclareActivity activity{&kInstallingService_};
41 GetServiceRep_ ()._Install ();
42 }
43 inline void Main::UnInstall ()
44 {
45 Debug::TraceContextBumper ctx{"Stroika::Frameworks::Service::Main::UnInstall"};
46 static constexpr Execution::Activity kUnInstallingService_{"uninstalling service"sv};
47 Execution::DeclareActivity activity{&kUnInstallingService_};
48 GetServiceRep_ ()._UnInstall ();
49 }
50 inline void Main::Start (Time::DurationSeconds timeout)
51 {
52 using namespace Characters;
53 Debug::TraceContextBumper ctx{"Stroika::Frameworks::Service::Main::Start", "timeout = {}"_f, timeout.count ()};
54 static constexpr Execution::Activity kStartingService_{"staring service"sv};
55 Execution::DeclareActivity activity{&kStartingService_};
56 GetServiceRep_ ()._Start (timeout);
57 }
58 inline void Main::Stop (Time::DurationSeconds timeout)
59 {
60 using namespace Characters;
61 Debug::TraceContextBumper ctx{"Stroika::Frameworks::Service::Main::Stop", "timeout = {}"_f, timeout.count ()};
62 static constexpr Execution::Activity kStoppingService_{"stopping service"sv};
63 Execution::DeclareActivity activity{&kStoppingService_};
64 GetServiceRep_ ()._Stop (timeout);
65 }
67 {
68 using namespace Characters;
69 Debug::TraceContextBumper ctx{"Stroika::Frameworks::Service::Main::ForcedStop", "timeout = {}"_f, timeout.count ()};
70 static constexpr Execution::Activity kForcedStoppingService_{"forced stopping service"sv};
71 Execution::DeclareActivity activity{&kForcedStoppingService_};
72 GetServiceRep_ ()._ForcedStop (timeout);
73 }
74 inline pid_t Main::GetServicePID () const
75 {
76 return GetServiceRep_ ()._GetServicePID ();
77 }
78 inline Main::State Main::GetState () const
79 {
80 return GetServiceRep_ ()._GetState ();
81 }
82
83}
#define RequireNotNull(p)
Definition Assertions.h:347
chrono::duration< double > DurationSeconds
chrono::duration<double> - a time span (length of time) measured in seconds, but high precision.
Definition Realtime.h:57
Set<T> is a container of T, where once an item is added, additionally adds () do nothing.
Definition Set.h:105
nonvirtual Containers::Set< ServiceIntegrationFeatures > GetServiceIntegrationFeatures() const
Definition Main.inl:32
nonvirtual pid_t GetServicePID() const
Definition Main.inl:74
nonvirtual void ForcedStop(Time::DurationSeconds timeout)
Definition Main.inl:66