diff options
Diffstat (limited to 'rasmgr/rasmgr_config.hh')
-rw-r--r-- | rasmgr/rasmgr_config.hh | 134 |
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 |