testing: freebsd [travis skip]
[awesomized/libmemcached] / test / lib / Cluster.hpp
index 1bbc9d22325568a7c64369b068b1e64175377c26..4e151020c65cdc2a7c6dc747a973dc451de8f80d 100644 (file)
@@ -1,3 +1,18 @@
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - C/C++ Client Library for memcached                  |
+    +--------------------------------------------------------------------+
+    | Redistribution and use in source and binary forms, with or without |
+    | modification, are permitted under the terms of the BSD license.    |
+    | You should have received a copy of the license in a bundled file   |
+    | named LICENSE; in case you did not receive a copy you can review   |
+    | the terms online at: https://opensource.org/licenses/BSD-3-Clause  |
+    +--------------------------------------------------------------------+
+    | Copyright (c) 2006-2014 Brian Aker   https://datadifferential.com/ |
+    | Copyright (c) 2020 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
+
 #pragma once
 
 #include "common.hpp"
 
 class Cluster {
 public:
-  explicit
-  Cluster(Server serv, uint16_t cnt = 0);
-
+  explicit Cluster(Server serv, uint16_t cnt = 0);
+  explicit Cluster(vector<Server> servers);
   ~Cluster();
 
   Cluster(const Cluster &c) = delete;
-  Cluster &operator = (const Cluster &c) = delete;
+  Cluster &operator=(const Cluster &c) = delete;
 
-  Cluster(Cluster &&c)
-  : proto{}
-  {
+  Cluster(Cluster &&c) noexcept
+  : proto{} {
     *this = move(c);
   };
-  Cluster &operator = (Cluster &&c) {
+  Cluster &operator=(Cluster &&c) noexcept {
     count = exchange(c.count, 0);
     proto = exchange(c.proto, Server{});
     cluster = exchange(c.cluster, {});
@@ -29,14 +42,14 @@ public:
   const vector<Server> &getServers() const;
 
   bool start();
-  void stop();
-  void reset();
+  void stop(bool graceful = false);
   bool isStopped();
   bool isListening();
   void wait();
+  bool restart();
 
 private:
-  uint16_t count;
+  size_t count;
   Server proto;
   vector<Server> cluster;
   map<pid_t, Server *> pids;