summaryrefslogtreecommitdiffstats
path: root/rasmgr/rasmgr_config.hh
diff options
context:
space:
mode:
authorConstantin Jucovschi <cj@ubuntu.localdomain>2009-04-24 07:20:22 -0400
committerConstantin Jucovschi <cj@ubuntu.localdomain>2009-04-24 07:20:22 -0400
commit8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 (patch)
treebd328a4dd4f92d32202241b5e3a7f36177792c5f /rasmgr/rasmgr_config.hh
downloadrasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.tar.gz
rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.tar.xz
rasdaman-upstream-8f27e65bddd7d4b8515ce620fb485fdd78fcdf89.zip
Initial commitv8.0
Diffstat (limited to 'rasmgr/rasmgr_config.hh')
-rw-r--r--rasmgr/rasmgr_config.hh134
1 files changed, 134 insertions, 0 deletions
diff --git a/rasmgr/rasmgr_config.hh b/rasmgr/rasmgr_config.hh
new file mode 100644
index 0000000..e8e7288
--- /dev/null
+++ b/rasmgr/rasmgr_config.hh
@@ -0,0 +1,134 @@
+/*
+* This file is part of rasdaman community.
+*
+* Rasdaman community is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* Rasdaman community 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>.
+*
+* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
+rasdaman GmbH.
+*
+* For more information please see <http://www.rasdaman.org>
+* or contact Peter Baumann via <baumann@rasdaman.com>.
+/
+/**
+ * SOURCE: rasmgr_config.hh
+ *
+ * MODULE: rasmgr
+ * CLASS: Configuration, RasmgrLicense
+ *
+ * PURPOSE:
+ * Config info from commandline, environment and license
+ *
+ * COMMENTS:
+ * none
+ *
+*/
+#ifndef RASMGR_CONFIG_HH
+#define RASMGR_CONFIG_HH
+
+#include <iostream>
+#include <string>
+#include <sys/time.h>
+
+#include "commline/cmlparser.hh"
+
+// default rasmgr listen port polling frequency [secs]
+// must be longer than the OS specific time to release TIM_WAIT sockets
+const int DEFAULT_POLLING_FREQUENCY = 200;
+// #define helps to avoid multiple defs in different .cc files:
+#define DEFAULT_POLLING_FREQUENCY_STR "200"
+
+/// host/domain name size (See man gethostname)
+#define HOSTNAME_SIZE 255
+
+class Configuration
+ {
+ public:
+ Configuration();
+
+ bool interpretArguments(int argc, char **argv,char **envp);
+ bool readConfigFile();
+ bool saveOrigConfigFile();
+ bool saveAltConfigFile();
+ const char *getAltConfigFileName();
+ const struct tm *getExpirationDate();
+ const char * getHostName();
+ const char * getPublicHostName();
+ int getListenPort();
+
+ const char * getMasterName();
+ int getMasterPort();
+ int getPollFrequency();
+ const char * getSlaveName();
+ bool isTestModus();
+ bool isDebugSupport();
+ bool isVerbose();
+
+ bool allowMultipleWriteTransactions();
+
+ void printStatus();
+
+ private:
+ void printHelp();
+
+ char hostName[HOSTNAME_SIZE];
+ char publicHostName[HOSTNAME_SIZE]; // usually ==hostName, but you might want to publish IP address or hostname.domainname instead
+ int listenPort;
+ // name of configuration file
+ char configFileName[HOSTNAME_SIZE];
+ // name of alternate configuration file for rescue save, generated by saveAltConfigFile()
+ char altConfigFileName[HOSTNAME_SIZE];
+
+ // if slave
+ char masterName[HOSTNAME_SIZE];
+ int masterPort;
+ char slaveName[HOSTNAME_SIZE]; //my name, when I'm slave and no HIGHLANDER
+
+ int pollFrequency; // listen port polling frequency in seconds
+ bool testModus;
+ bool debugSupport;
+ bool verbose;
+ bool slave;
+
+ bool saveConfigFile();
+
+ bool rtHlTest;
+ bool allowMultiWT;
+
+ //interface program
+ CommandLineParser &cmlInter;
+ CommandLineParameter &cmlHelp, &cmlHostName, &cmlPort, &cmlPollFrequ;
+ CommandLineParameter &cmlMaster, &cmlMasterPort, &cmlName, &cmlQuiet;
+#ifdef NO_OFFICIAL_RELEASE
+ CommandLineParameter &cmlTest, &cmlDSup, &cmlRandTest, &cmlRth, &cmlMultiWT;
+#endif
+ };
+
+extern Configuration config;
+
+class BenchmarkTimer
+ {
+ public:
+ BenchmarkTimer(const char *text);
+ ~BenchmarkTimer();
+ void result();
+ private:
+ int timeval_subtract(timeval *result,timeval *x,timeval *y);
+
+ struct timeval start;
+ struct timeval end;
+
+ char* text;
+
+ };
+#endif