📄 manager.cpp
字号:
#include "workthread.h"#include "inifile.h"using namespace std;using namespace ZThread;using namespace oracle::occi;int main(int argc, char **argv) { SockQueue queue(new TQueue<iosockinet*>); sockinetbuf sin(sockbuf::sock_stream); IniFile ini; if(!ini.open("manager.ini")) return -1; const string username = ini.read("db","username"); const string passwd = ini.read("db","passwd"); const string connectString = ini.read("db","database"); if(username.empty()&&passwd.empty()&&connectString.empty()) return -1; unsigned int maxCon = atoi((ini.read("db","maxCon")).c_str()); unsigned int minCon = atoi((ini.read("db","minCon")).c_str()); unsigned int incrCon = atoi((ini.read("db","incrCon")).c_str()); unsigned int threadNum = atoi((ini.read("manager","threadNum")).c_str()); unsigned int port = atoi((ini.read("manager","port")).c_str()); Environment *env = Environment::createEnvironment ("ZHS16GBK", "UTF8"); StatelessConnectionPool *scp =env->createStatelessConnectionPool(username, passwd, connectString, maxCon, minCon, incrCon, StatelessConnectionPool::HOMOGENEOUS ); if (scp) cout << "SUCCESS - StatelessConnectionPool"<< endl; else cout << "FAILURE - StatelessConnectionPool"<< endl; sin.bind(port); cout << "localhost = "<< sin.localhost() << endl; cout << "localport = "<< sin.localport() << endl; sin.listen(); ThreadedExecutor executor; for (int i = 0; i < threadNum; i++) executor.execute(new Worker(queue,i,scp)); for (;;) { iosockinet *sock; sock = new iosockinet (sin.accept ()); sockaddr_in *remote_sock = sock->rdbuf()->peeraddr().addr_in(); //cout << "socksockaddr_in.addr() = " << remote_sock << endl; //cout << "port: " << ntohs(remote_sock->sin_port) << endl; //cout << "addr: " << hex << inet_ntoa(remote_sock->sin_addr) << endl; //cout << "peerhost: " << sock->rdbuf()->peerhost() << endl; queue->put(sock); } //env->terminateStatelessConnectionPool(scp);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -