Remove some default copy constructors and their unintended uses.
authorDavin McCall <davmac@davmac.org>
Thu, 13 Sep 2018 18:56:27 +0000 (19:56 +0100)
committerDavin McCall <davmac@davmac.org>
Thu, 13 Sep 2018 18:56:27 +0000 (19:56 +0100)
src/includes/control.h
src/includes/service.h
src/service.cc
src/tests/proctests.cc

index 6ba632ea894b69e06e46507f72ef9a8c89d0d0bd..f609d665acf8f089408694affeb4adbbb3fdd2bc 100644 (file)
@@ -59,6 +59,9 @@ class control_conn_watcher : public eventloop_t::bidi_fd_watcher_impl<control_co
         // constructor
     }
 
+    control_conn_watcher(const control_conn_watcher &) = delete;
+    void operator=(const control_conn_watcher &) = delete;
+
     rearm read_ready(eventloop_t &loop, int fd) noexcept
     {
         return receive_event(loop, fd, dasynq::IN_EVENTS);
index 7892fbe809d191d8388958cb53397334ee4b66ee..7d95848c6b91a1467f20fc1bda050eef61e8b4b8 100644 (file)
@@ -194,6 +194,9 @@ class service_dep
             : from(from), to(to), waiting_on(false), holding_acq(false), dep_type(dep_type_p)
     {  }
 
+    service_dep(const service_dep &) = delete;
+    void operator=(const service_dep &) = delete;
+
     service_record * get_from() const noexcept
     {
         return from;
@@ -225,6 +228,9 @@ class service_child_watcher : public eventloop_t::child_proc_watcher_impl<servic
     dasynq::rearm status_change(eventloop_t &eloop, pid_t child, int status) noexcept;
     
     service_child_watcher(base_process_service * sr) noexcept : service(sr) { }
+
+    service_child_watcher(const service_child_watcher &) = delete;
+    void operator=(const service_child_watcher &) = delete;
 };
 
 // Watcher for the pipe used to receive exec() failure status errno
@@ -235,6 +241,9 @@ class exec_status_pipe_watcher : public eventloop_t::fd_watcher_impl<exec_status
     dasynq::rearm fd_event(eventloop_t &eloop, int fd, int flags) noexcept;
     
     exec_status_pipe_watcher(base_process_service * sr) noexcept : service(sr) { }
+
+    exec_status_pipe_watcher(const exec_status_pipe_watcher &) = delete;
+    void operator=(exec_status_pipe_watcher &) = delete;
 };
 
 // service_record: base class for service record containing static information
@@ -495,6 +504,9 @@ class service_record
         }
     }
 
+    service_record(const service_record &) = delete;
+    void operator=(const service_record &) = delete;
+
     virtual ~service_record() noexcept
     {
     }
index 2ae19150f8b04e8770ce0703395a30827ca264b2..32ada6e7a466ca55495c641241426638b076acf8 100644 (file)
@@ -74,7 +74,7 @@ void service_record::stopped() noexcept
     bool will_restart = (desired_state == service_state_t::STARTED)
             && services->get_auto_restart();
 
-    for (auto dependency : depends_on) {
+    for (auto dependency : depends_on) {
         // we signal dependencies in case they are waiting for us to stop:
         dependency.get_to()->dependent_stopped();
     }
index 27c0c643550408730859098250e7fe13f9e09fbf..1f61cf280fd997019299d4d30468fea6d6450da3 100644 (file)
@@ -71,7 +71,7 @@ void test_proc_service_start()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    process_service p = process_service(&sset, "testproc", std::move(command), command_offsets, depends);
+    process_service p {&sset, "testproc", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     sset.add_service(&p);
 
@@ -101,7 +101,7 @@ void test_proc_unexpected_term()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    process_service p = process_service(&sset, "testproc", std::move(command), command_offsets, depends);
+    process_service p {&sset, "testproc", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     sset.add_service(&p);
 
@@ -135,7 +135,7 @@ void test_term_via_stop()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    process_service p = process_service(&sset, "testproc", std::move(command), command_offsets, depends);
+    process_service p {&sset, "testproc", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     sset.add_service(&p);
 
@@ -176,7 +176,7 @@ void test_term_via_stop2()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    process_service p = process_service(&sset, "testproc", std::move(command), command_offsets, depends);
+    process_service p {&sset, "testproc", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     sset.add_service(&p);
 
@@ -335,7 +335,7 @@ void test_proc_stop_timeout()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    process_service p = process_service(&sset, "testproc", std::move(command), command_offsets, depends);
+    process_service p {&sset, "testproc", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     sset.add_service(&p);
 
@@ -386,7 +386,7 @@ void test_proc_smooth_recovery1()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    process_service p = process_service(&sset, "testproc", std::move(command), command_offsets, depends);
+    process_service p {&sset, "testproc", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     p.set_smooth_recovery(true);
     sset.add_service(&p);
@@ -431,7 +431,7 @@ void test_proc_smooth_recovery2()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    process_service p = process_service(&sset, "testproc", std::move(command), command_offsets, depends);
+    process_service p {&sset, "testproc", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     p.set_smooth_recovery(true);
     p.set_restart_delay(time_val(0, 0));
@@ -472,7 +472,7 @@ void test_scripted_stop_timeout()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    scripted_service p = scripted_service(&sset, "testscripted", std::move(command), command_offsets, depends);
+    scripted_service p {&sset, "testscripted", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     p.set_stop_command(stopcommand, command_offsets);
     sset.add_service(&p);
@@ -529,7 +529,7 @@ void test_scripted_start_fail()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    scripted_service p = scripted_service(&sset, "testscripted", std::move(command), command_offsets, depends);
+    scripted_service p {&sset, "testscripted", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     p.set_stop_command(stopcommand, command_offsets);
     sset.add_service(&p);
@@ -575,7 +575,7 @@ void test_scripted_stop_fail()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    scripted_service p = scripted_service(&sset, "testscripted", std::move(command), command_offsets, depends);
+    scripted_service p {&sset, "testscripted", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     p.set_stop_command(stopcommand, command_offsets);
     sset.add_service(&p);
@@ -633,7 +633,7 @@ void test_scripted_start_skip()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    scripted_service p = scripted_service(&sset, "testscripted", std::move(command), command_offsets, depends);
+    scripted_service p {&sset, "testscripted", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     service_flags_t sflags;
     sflags.skippable = true;
@@ -685,7 +685,7 @@ void test_scripted_start_skip2()
     command_offsets.emplace_back(0, command.length());
     std::list<prelim_dep> depends;
 
-    scripted_service p = scripted_service(&sset, "testscripted", std::move(command), command_offsets, depends);
+    scripted_service p {&sset, "testscripted", std::move(command), command_offsets, depends};
     init_service_defaults(p);
     service_flags_t sflags;
     sflags.skippable = true;