/* * 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 . * * Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / rasdaman GmbH. * * For more information please see * or contact Peter Baumann via . / /** * 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 #include #include #include // PATH_MAX #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 /** * \ingroup Rasmgrs */ 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[PATH_MAX]; // name of alternate configuration file for rescue save, generated by saveAltConfigFile() char altConfigFileName[PATH_MAX]; // 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 RMANDEBUG CommandLineParameter &cmlTest, &cmlDSup, &cmlRandTest, &cmlRth, &cmlMultiWT; #endif }; extern Configuration config; /** * \ingroup Rasmgrs */ 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