Build from trunk
[m6w6/libmemcached] / libtest / server.h
index c09469ecea160164f1076f62968e5a96b9bb1196..b50b0b2e6fe516a125b679a614e2e14eba9af19c 100644 (file)
@@ -1,10 +1,22 @@
-/*
- * Copyright (C) 2011 Data Differential, http://datadifferential.com/
- * Copyright (C) 2006-2009 Brian Aker
- * All rights reserved.
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ * 
+ *  libtest
  *
- * Use and distribution licensed under the BSD license.  See
- * the COPYING file in the parent directory for full text.
+ *  Copyright (C) 2011 Data Differential, http://datadifferential.com/
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 3 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
 #pragma once
@@ -24,6 +36,7 @@ struct Server {
 private:
   bool _is_socket;
   std::string _socket;
+  std::string _sasl;
   std::string _pid_file;
   std::string _log_file;
   std::string _base_command; // executable command which include libtool, valgrind, gdb, etc
@@ -48,6 +61,11 @@ public:
   virtual const char *log_file_option()= 0;
   virtual bool is_libtool()= 0;
 
+  virtual bool broken_socket_cleanup()
+  {
+    return false;
+  }
+
   virtual const char *socket_file_option() const
   {
     return NULL;
@@ -106,6 +124,11 @@ public:
     return (_port != 0);
   }
 
+  virtual bool has_syslog() const
+  {
+    return false;
+  }
+
   // Reset a server if another process has killed the server
   void reset()
   {
@@ -130,6 +153,8 @@ public:
     return (_pid > 1);
   }
 
+  bool wait_for_pidfile() const;
+
   bool check_pid(pid_t pid_arg) const
   {
     return (pid_arg > 1);
@@ -152,14 +177,13 @@ public:
   bool command(std::string& command_arg);
 
 protected:
-  void nap();
+  bool set_pid_file();
 
 private:
   bool is_helgrind() const;
   bool is_valgrind() const;
   bool is_debug() const;
   bool set_log_file();
-  bool set_pid_file();
   bool set_socket_file();
   void rebuild_base_command();
   void reset_pid();
@@ -167,42 +191,6 @@ private:
 
 std::ostream& operator<<(std::ostream& output, const libtest::Server &arg);
 
-class server_startup_st
-{
-private:
-  std::string server_list;
-
-public:
-
-  uint8_t udp;
-  std::vector<Server *> servers;
-
-  server_startup_st() :
-    udp(0)
-  { }
-
-  bool start_socket_server(const std::string& server_type, const in_port_t try_port, int argc, const char *argv[]);
-
-  std::string option_string() const;
-
-  size_t count() const
-  {
-    return servers.size();
-  }
-
-  bool is_debug() const;
-  bool is_helgrind() const;
-  bool is_valgrind() const;
-
-  void shutdown(bool remove= false);
-  void push_server(Server *);
-  Server *pop_server();
-
-  ~server_startup_st();
-};
-
-bool server_startup(server_startup_st&, const std::string&, in_port_t try_port, int argc, const char *argv[]);
-
 } // namespace libtest