Renamed 'start_ps_process' function to 'bring_up'.
authorDavin McCall <davmac@davmac.org>
Sun, 31 Dec 2017 20:19:21 +0000 (20:19 +0000)
committerDavin McCall <davmac@davmac.org>
Sun, 31 Dec 2017 20:19:21 +0000 (20:19 +0000)
Also some minor reorganising, improve comments etc.

src/service.cc
src/service.h

index a29948c23dab466b400e3b4203d02fb1c1812b0e..aaa9b9ae01259bece43acd3c7445c7a24a51e2a2 100644 (file)
@@ -718,7 +718,7 @@ void service_record::all_deps_started(bool has_console) noexcept
         failed_to_start();
     }
 
-    bool start_success = start_ps_process();
+    bool start_success = bring_up();
     if (! start_success) {
         failed_to_start();
     }
@@ -878,14 +878,14 @@ void service_record::failed_to_start(bool depfailed) noexcept
     }
 }
 
-bool service_record::start_ps_process() noexcept
+bool service_record::bring_up() noexcept
 {
     // default implementation: there is no process, so we are started.
     started();
     return true;
 }
 
-bool base_process_service::start_ps_process() noexcept
+bool base_process_service::bring_up() noexcept
 {
     if (restarting) {
         if (pid == -1) {
index 5fa51bcffb40cd9a0b84fc08e3875b00b3f4c41b..7560239ee45c05c504c71a8c0bdb5fb3c8e19095 100644 (file)
@@ -258,6 +258,11 @@ class exec_status_pipe_watcher : public eventloop_t::fd_watcher_impl<exec_status
 
 // service_record: base class for service record containing static information
 // and current state of each service.
+//
+// This abstract base class defines the dependency behaviour of services. The actions to actually bring a
+// service up or down are specified by subclasses in the virtual methods (see especially bring_up() and
+// bring_down()).
+//
 class service_record
 {
     protected:
@@ -348,9 +353,6 @@ class service_record
     
     // stop immediately
     void emergency_stop() noexcept;
-
-    // All dependents have stopped, and this service should proceed to stop.
-    virtual void bring_down() noexcept;
     
     // Service has actually stopped (includes having all dependents
     // reaching STOPPED state).
@@ -371,9 +373,6 @@ class service_record
     
     void all_deps_started(bool haveConsole = false) noexcept;
 
-    // Do any post-dependency startup; return false on failure
-    virtual bool start_ps_process() noexcept;
-
     // Open the activation socket, return false on failure
     bool open_socket() noexcept;
 
@@ -383,22 +382,6 @@ class service_record
     // Check whether all dependencies have started (i.e. whether we can start now)
     bool check_deps_started() noexcept;
 
-    // Whether a STARTING service can immediately transition to STOPPED (as opposed to
-    // having to wait for it reach STARTED and then go through STOPPING).
-    virtual bool can_interrupt_start() noexcept
-    {
-        return waiting_for_deps;
-    }
-    
-    // Whether a STARTING service can transition to its STARTED state, once all
-    // dependencies have started.
-    virtual bool can_proceed_to_start() noexcept
-    {
-        return true;
-    }
-
-    virtual void interrupt_start() noexcept;
-
     // Whether a STOPPING service can immediately transition to STARTED.
     bool can_interrupt_stop() noexcept
     {
@@ -450,6 +433,30 @@ class service_record
     // Called on transition of desired state from started to stopped (or unpinned start)
     void do_stop() noexcept;
 
+    // Virtual functions, to be implemented by service implementations:
+
+    // Do any post-dependency startup; return false on failure
+    virtual bool bring_up() noexcept;
+
+    // All dependents have stopped, and this service should proceed to stop.
+    virtual void bring_down() noexcept;
+
+    // Whether a STARTING service can immediately transition to STOPPED (as opposed to
+    // having to wait for it reach STARTED and then go through STOPPING).
+    virtual bool can_interrupt_start() noexcept
+    {
+        return waiting_for_deps;
+    }
+
+    // Whether a STARTING service can transition to its STARTED state, once all
+    // dependencies have started.
+    virtual bool can_proceed_to_start() noexcept
+    {
+        return true;
+    }
+
+    virtual void interrupt_start() noexcept;
+
     public:
 
     service_record(service_set *set, string name)
@@ -651,7 +658,7 @@ class base_process_service : public service_record
     bool start_is_interruptible : 1;  // whether we can interrupt start
 
     // Start the process, return true on success
-    virtual bool start_ps_process() noexcept override;
+    virtual bool bring_up() noexcept override;
     bool start_ps_process(const std::vector<const char *> &args, bool on_console) noexcept;
 
     // Restart the process (due to start failure or unexpected termination). Restarts will be