/**************************************************************************** od_statusd : Application status monitoring daemon for OpenDisk service CopyRight(C) 2005 SolutionBox Inc. All Rights reserved. Author : Sean Kim (sean@0x31.com) $Id: serv_conf.h,v 1.7 2007/02/20 04:31:12 mirshead Exp $ Redistribution and use in source and binary forms, with or with out modification, are not permitted in outside of SolutionBox Inc. ****************************************************************************/ #ifndef __SERV_CONF_H__ #define __SERV_CONF_H__ #include #include #include #include #include "util.h" #include "rconfig.h" #include "address.h" #include "protocol.h" using namespace std; using namespace SDSocket; #define NumOfServerType 10 #define MaxSizeOfServerName 32 #define MaxSizeOfServerAddr 16 #define MaxSizeOfServerPort 8 #define MaxSizeOfServerType 24 #define MaxSizeOfRCAcctName 32 #define MaxSizeOfRCAcctUser 32 #define MaxSizeOfRCAcctPassword 32 #define MaxSizeOfRCAcctCert 128 #define MaxSizeOfRCAcctAuthkey 128 #define CONFIG_SERV "SERV" #define CONFIG_RCACCT "RCACCT" enum eServType { SERV_WWW = 0, SERV_FHS = 1, SERV_RC = 2, SERV_DB = 3 }; const char a_ServType[NumOfServerType][MaxSizeOfServerType] = {"www", "rts", "rc", "ccdb", "rcts", "gts", "rcdb", "gms", "timed", "stat"}; #define MAX_IP_STRING 17 typedef struct _ServInfo_e { char * m_pszServName; char m_szIpString[MAX_IP_STRING]; short m_sPort; //Address m_Address; time_t m_StatChgTime; unsigned int m_Status; unsigned int m_ServType; unsigned int m_DeadCount; char * m_pszDomainName; struct svr_status ss; struct _ServInfo_e *next; } servinfo_t; typedef struct _RCAcct_e { char * m_pszServiceName; char * m_pszUserName; char * m_pszPassword; char * m_pszAuthkey; char * m_pszCertLocation; struct _RCAcct_e *next; } rcacct_t; typedef struct _CellInfo { string m_strCellPhone; } cellinfo_t; class CLoadServConfig : public Config { public: enum eStatus { ALIVE = 1, DEAD = 2 }; CLoadServConfig() throw(); virtual int GetValue(const char *pzKey, char *pszValue); int LoadServConfig(const char *pszFileName); void clearLoadCount(void) { m_Counter = 0; } int getServerCount(void) { return m_ServerCounter; } int getRCAcctCount(void) { return m_RCAcctCounter; } int GetServerValue(servinfo_t *pServInfo); int GetRCAcctValue(rcacct_t *pRCAcctInfo); int GetCellphoneValue(cellinfo_t *pCellInfo); servinfo_t *getList(void) throw() { return m_pServerList; } void addServerToList(servinfo_t newServInfo) throw(); void addRCToList(rcacct_t newAcctInfo) throw(); rcacct_t *RCAcctFind(char *name); void addCellphoneToList(cellinfo_t newCellphoneInfo) throw(); void InsertServKeyValue(const char *pszKey, const char *pzValue); int UpdateStatus(unsigned int _ServType, eStatus _Status, char *servname); int IncreaseDeadCount(unsigned int _ServType, char *servname); void DumpStatusString(string &strStatus) throw(); void DumpPrintAll(void) throw(); char *getMemory(int size) throw(); void releaseMemory(char *ptr) throw(); private: unsigned int m_RCAcctCounter; unsigned int m_ServerCounter; unsigned int m_Counter; //std::list m_ServerList; servinfo_t *m_pServerList; rcacct_t *m_pRCAcctList; std::list m_CellInfo; static Semaphore threadsLock; MM *m_pShm; }; #endif