📄 memobserver.cpp
字号:
/**************************************************************Copyright (C), 2002-2010, congxing Co., Ltd.File name: memObserver.cppAuthor: wzy Version: V01.00.00.00Date: 2006.06.24Description: Others: History: ***************************************************************///引用头文件#include <stdio.h>#include <stdlib.h>#include <memory.h>#include <unistd.h>#include <time.h>#include <Utility.h>#include "Tools.h"#include "BaseConst.h"#include "ShmApply.h"#include "Ini.h"#include "Db.h"void sigtimeout(int sig);void initShm( char *szfilename);void initDb( char *szfilename);void registerMem();bool g_btimeOut;int g_itimeOut;COra *g_db;CTblPARA *g_ppara;CShmApply csa_udp,csa_tcp,csa_msn,csa_radius,csa_qq,csa_yahoo,csa_telnet,csa_ftp;int main(int argc, char* argv[]){ if (argc < 3) { printf("Usage: %s <config file> timeout\n", argv[0]); exit(-1); } TLog::openLog(argv[0]); g_btimeOut=false; g_itimeOut=atoi(argv[2]); initDb(argv[1]); initShm( argv[1]); registerMem(); signal(SIGALRM,sigtimeout); alarm(g_itimeOut); while(1) { if(g_btimeOut) { g_btimeOut=false; registerMem(); } else pause(); }}void sigtimeout(int sig){ g_btimeOut=true; signal(SIGALRM,sigtimeout); alarm(g_itimeOut);}void initDb(char *filename){ CConfig cfg; char buf[32]; char buf1[32]; if (cfg.ReadConfig(filename) != 0) { printf("Read %s Failed!\n",filename); exit(-1); } if(cfg.GetItemValue("DB", "name", buf)!=0) { printf("Read DB:id Failed!\n"); exit(-1); } if(cfg.GetItemValue("DB", "passwd", buf1)!=0) { printf("Read DB:id Failed!\n"); exit(-1); } g_db=new COra(buf,buf1); g_ppara=new CTblPARA(); }void initShm( char *szfilename){ CConfig cfg; char chKey[15+1]; key_t key ; char chShmSize[15+1]; long lgShmSize = 0; bzero(chKey, sizeof(chKey)); bzero(chShmSize, sizeof(chShmSize)); // 读配置文件,获取共享内存的key值和大小 if (cfg.ReadConfig(szfilename) != 0) { printf("--Read INI File:%s Failed!\n",szfilename ); exit(-1); } // 读配置 cfg.GetItemValue("COLLSHM", "key_tcp", chKey); // 获取共享内存key值 cfg.GetItemValue("COLLSHM", "size_tcp", chShmSize); // 获取共享内存大小 if (sscanf(chShmSize, "%ld", &lgShmSize) != 1) { printf("[COLLSHM]:size_tcp %s is Not numeric!\n", chShmSize); exit(-1); } if (sscanf(chKey, "%d", &key) != 1) { printf("[COLLSHM]:key_tcp %s is Not numeric!\n", chKey); exit(-1); } if (csa_tcp.init(key, lgShmSize * 1024 * 1024, 0666) < 0) { printf("Init semaphore failed!\n"); exit(-1); } //udp(exclude radius) cfg.GetItemValue("COLLSHM", "key_udp", chKey); // 获取共享内存key值 cfg.GetItemValue("COLLSHM", "size_udp", chShmSize); // 获取共享内存大小 if (sscanf(chShmSize, "%ld", &lgShmSize) != 1) { printf("[COLLSHM]:size_udp %s is Not numeric!\n", chShmSize); exit(-1); } if (sscanf(chKey, "%d", &key) != 1) { printf("[COLLSHM]:key_udp %s is Not numeric!\n", chKey); exit(-1); } if (csa_udp.init(key, lgShmSize * 1024 * 1024, 0666) < 0) { printf("--Init failed!\n"); exit(-1); } //msn cfg.GetItemValue("COLLSHM", "key_msn", chKey); // 获取共享内存key值 cfg.GetItemValue("COLLSHM", "size_msn", chShmSize); // 获取共享内存大小 if (sscanf(chShmSize, "%ld", &lgShmSize) != 1) { printf("[COLLSHM]:size_msn %s is Not numeric!\n", chShmSize); exit(-1); } if (sscanf(chKey, "%d", &key) != 1) { printf("[COLLSHM]:key_msn %s is Not numeric!\n", chKey); exit(-1); } if (csa_msn.init(key, lgShmSize * 1024 * 1024, 0666) < 0) { printf("-Init failed!\n"); exit(-1); } //radius cfg.GetItemValue("COLLSHM", "key_radius", chKey); // 获取共享内存key值 cfg.GetItemValue("COLLSHM", "size_radius", chShmSize); // 获取共享内存大小 if (sscanf(chShmSize, "%ld", &lgShmSize) != 1) { printf("[COLLSHM]:size_radius %s is Not numeric!\n", chShmSize); exit(-1); } if (sscanf(chKey, "%d", &key) != 1) { printf("[COLLSHM]:key_radius %s is Not numeric!\n", chKey); exit(-1); } if (csa_radius.init(key, lgShmSize * 1024 * 1024, 0666) < 0) { printf("-Init failed!\n"); exit(-1); } //qq cfg.GetItemValue("COLLSHM", "key_qq", chKey); // 获取共享内存key值 cfg.GetItemValue("COLLSHM", "size_qq", chShmSize); // 获取共享内存大小 if (sscanf(chShmSize, "%ld", &lgShmSize) != 1) { printf("[COLLSHM]:size_radius %s is Not numeric!\n", chShmSize); exit(-1); } if (sscanf(chKey, "%d", &key) != 1) { printf("[COLLSHM]:key_radius %s is Not numeric!\n", chKey); exit(-1); } if (csa_qq.init(key, lgShmSize * 1024 * 1024, 0666) < 0) { printf("--Init failed!\n"); exit(-1); } //yahoo cfg.GetItemValue("COLLSHM", "key_yahoo", chKey); // 获取共享内存key值 cfg.GetItemValue("COLLSHM", "size_yahoo", chShmSize); // 获取共享内存大小 if (sscanf(chShmSize, "%ld", &lgShmSize) != 1) { printf("[COLLSHM]:size_radius %s is Not numeric!\n", chShmSize); exit(-1); } if (sscanf(chKey, "%d", &key) != 1) { printf("[COLLSHM]:key_radius %s is Not numeric!\n", chKey); exit(-1); } if (csa_yahoo.init(key, lgShmSize * 1024 * 1024, 0666) < 0) { printf("--Init failed!\n"); exit(-1); } //ftp cfg.GetItemValue("COLLSHM", "key_ftp", chKey); // 获取共享内存key值 cfg.GetItemValue("COLLSHM", "size_ftp", chShmSize); // 获取共享内存大小 if (sscanf(chShmSize, "%ld", &lgShmSize) != 1) { printf("[COLLSHM]:size_ftp %s is Not numeric!\n", chShmSize); exit(-1); } if (sscanf(chKey, "%d", &key) != 1) { printf("[COLLSHM]:key_ftp %s is Not numeric!\n", chKey); exit(-1); } if (csa_ftp.init(key, lgShmSize * 1024 * 1024, 0666) < 0) { printf("--Init failed!\n"); exit(-1); } //telnet cfg.GetItemValue("COLLSHM", "key_telnet", chKey); // 获取共享内存key值 cfg.GetItemValue("COLLSHM", "size_telnet", chShmSize); // 获取共享内存大小 if (sscanf(chShmSize, "%ld", &lgShmSize) != 1) { printf("[COLLSHM]:size_telnet %s is Not numeric!\n", chShmSize); exit(-1); } if (sscanf(chKey, "%d", &key) != 1) { printf("[COLLSHM]:key_telnet %s is Not numeric!\n", chKey); exit(-1); } if (csa_telnet.init(key, lgShmSize * 1024 * 1024, 0666) < 0) { printf("--Init failed!\n"); exit(-1); }}void registerMem(){ TLog::toLog("coll-udp:%.2f%%\n",csa_udp.userate()*100); TLog::toLog("coll_tcp:%.2f%%\n",csa_tcp.userate()*100); TLog::toLog("coll_msn:%.2f%%\n",csa_msn.userate()*100); TLog::toLog("coll_radius:%.2f%%\n",csa_radius.userate()*100); TLog::toLog("coll_yahoo:%.2f%%\n",csa_yahoo.userate()*100); TLog::toLog("coll_telnet:%.2f%%\n",csa_telnet.userate()*100); TLog::toLog("coll_ftp:%.2f%%\n",csa_ftp.userate()*100); /* TLog::toLog("coll-udp:%.2f%%\n",csa_udp.userate()*100); TLog::toLog("coll-udp:%.2f%%\n",csa_udp.userate()*100); TLog::toLog("coll-udp:%.2f%%\n",csa_udp.userate()*100); */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -