开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
forked from 呵大官人/fooking
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
fooking
/
src
/
Config.cpp
fooking
/
src
/
Config.cpp
Config.cpp 3.71 KB
一键复制 编辑 原始数据 按行查看 历史
呵大官人 提交于 2015年06月11日 13:51 +08:00 . bug fix
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "Config.h"
NS_USING;
Config* Config::psObj = NULL;
Config::Config():
pState(NULL)
{
}
Config::~Config()
{
lua_close(pState);
}
bool Config::load(const char *filename)
{
pState = luaL_newstate();
if(luaL_dofile(pState, filename)){
printf("parse config file error=%s\n", lua_tostring(pState, -1));
return false;
}
//basic option
sFile = filename;//file
sHost = readString("HOST");//host
nPort = readInt("PORT");//port
bDaemonize = readBoolean("DAEMONIZE");
sLogFile = readString("LOG_FILE");//log file
nLogLevel = readInt("LOG_LEVEL");//log level
bRouter = readBoolean("ROUTER");//router server
//router == 1
if(bRouter){
return true;
}
//worker option
nServerId = readInt("SERVER_ID");
bEventConnect = readBoolean("EVENT_CONNECT");
bEventClose = readBoolean("EVENT_CLOSE");
nMaxClients = readInt("MAX_CLIENT_NUM");
nSendBufferSize = readInt("SEND_BUFF_SIZE");
nRecvBufferSize = readInt("RECV_BUFF_SIZE");
nWorkers = readInt("WORKER_NUM");
sScriptFile = readString("SCRIPT_FILE");
if(nSendBufferSize <= 0){
nSendBufferSize = 8192;
}
if(nRecvBufferSize <= 0){
nRecvBufferSize = 8192;
}
if(nWorkers < 1){
printf("WORKER_NUM Invalid(WORKER_NUM>=1)\n");
return false;
}
//backend server list
nBackendTimeout = readInt("BACKEND_TIMEOUT");
lua_getglobal(pState, "BACKEND_SERVER");
if(lua_isstring(pState, -1)){
const char *val = lua_tostring(pState, -1);
if(!addBackendServer(val, 1)){
printf("BACKEND_SERVER Invalid\n");
return false;
}
}else if(lua_istable(pState, -1)){
lua_pushnil(pState);
while(lua_next(pState, -2))
{
const char *str = NULL;
int weight = 0;
if(lua_isstring(pState, -2)){
str = lua_tostring(pState, -2);
}
if(lua_isnumber(pState, -1)){
weight = lua_tonumber(pState, -1);;
}
if(str && weight > 0){
if(!addBackendServer(str, weight)){
printf("BACKEND_SERVER Invalid\n");
return false;
}
}
lua_pop(pState, 1);
}
lua_pop(pState, 1);
}else{
printf("BACKEND_SERVER invalid\n");
return false;
}
//router option
sRouterHost = readString("ROUTER_HOST");
nRouterPort = readInt("ROUTER_PORT");
//fastcgi
sFastcgiRoot = readString("FASTCGI_ROOT");
sFastcgiFile = readString("FASTCGI_FILE");
//fastcgi params
lua_getglobal(pState, "FASTCGI_PARAMS");
if(lua_istable(pState, -1)){
lua_pushnil(pState);
while(lua_next(pState, -2))
{
const char *key = NULL;
const char *val = NULL;
if(lua_isstring(pState, -2)){
key = lua_tostring(pState, -2);
}
if(lua_isstring(pState, -1)){
val = lua_tostring(pState, -1);
}
if(key && val){
arFastcgiParams[key] = val;
}
lua_pop(pState, 1);
}
lua_pop(pState, 1);
}else{
printf("FASTCGI_PARAMS invalid\n");
return false;
}
return true;
}
bool Config::addBackendServer(const char *str, int weight)
{
SocketOption opt = utils::parseSocket(str);
BackendOption backend;
switch(opt.type){
case SOCKET_TCP:
backend.type = SOCKET_TCP;
backend.host = opt.tcp_host;
backend.port = opt.tcp_port;
break;
case SOCKET_UNIX:
backend.type = SOCKET_UNIX;
backend.host = opt.unix_name;
break;
default:
//Nothing todo;
return false;
}
backend.weight = weight;
arrBackendServer.push_back(backend);
nMaxBackendWeights+= weight;
return true;
}
int Config::readInt(const char *key)
{
lua_getglobal(pState, key);
int n = lua_tonumber(pState, -1);
lua_pop(pState, 1);
return n;
}
bool Config::readBoolean(const char *key)
{
int n = readInt(key);
return n ? true : false;
}
const char* Config::readString(const char *key)
{
lua_getglobal(pState, key);
const char *str = lua_tostring(pState, -1);
lua_pop(pState, 1);
if(str) return str;
return "";
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

分布式游戏网关(php游戏网关, php游戏服务端)
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/nmred/fooking.git
git@gitee.com:nmred/fooking.git
nmred
fooking
fooking
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /