fastdo  0.6.8
eienwebx::HttpApp类 参考

HttpApp类 更多...

#include <webx_HttpApp.hpp>

类 eienwebx::HttpApp 继承关系图:
eienwebx::HttpApp 的协作图:

Public 类型

using CrossRouteHandlerFunction = std::function< bool(winux::SharedPointer< HttpRequestCtx > requestCtxPtr, eienwebx::Response &rsp, winux::StringArray &urlPathPartArr, size_t i) >
 过径路由处理函数类型 更多...
 
using RouteHandlerFunction = std::function< void(winux::SharedPointer< HttpRequestCtx > requestCtxPtr, eienwebx::Response &rsp) >
 终点路由处理函数类型 更多...
 
using WebMainHandlerFunction = std::function< void(winux::SharedPointer< HttpRequestCtx > requestCtxPtr, eienwebx::Response &rsp) >
 
- Public 类型 继承自 eienwebx::App
enum  ErrorCode { Err_Success, Err_DoFileNotFound, Err_WebMainNotFound, Err_InfiniteRecursion }
 执行do文件的错误码 更多...
 
- Public 类型 继承自 eiennet::Server
using ClientDataNotifyHandlerFunction = std::function< void(winux::SharedPointer< ClientCtx > clientCtxPtr, size_t readableSize) >
 
using ClientDataArrivedHandlerFunction = std::function< void(winux::SharedPointer< ClientCtx > clientCtxPtr, winux::Buffer data) >
 
using CreateClientHandlerFunction = std::function< ClientCtx *(winux::uint64 clientId, winux::String const &clientEpStr, winux::SharedPointer< ip::tcp::Socket > clientSockPtr) >
 

Public 成员函数

 HttpApp ()
 构造函数0 更多...
 
 HttpApp (winux::ConfigureSettings const &settings, AppServerExternalData *externalData)
 构造函数1 更多...
 
 HttpApp (winux::ConfigureSettings const &settings, AppServerExternalData *externalData, eiennet::ip::EndPoint const &ep, int threadCount=4, int backlog=0, double serverWait=0.002, double verboseInterval=0.01, bool verbose=true, int cacheLifeTime=86400)
 构造函数2 更多...
 
bool init (winux::ConfigureSettings const &settings, AppServerExternalData *externalData)
 初始化1 更多...
 
bool init (winux::ConfigureSettings const &settings, AppServerExternalData *externalData, eiennet::ip::EndPoint const &ep, int threadCount=4, int backlog=0, double serverWait=0.002, double verboseInterval=0.01, bool verbose=true, int cacheLifeTime=86400)
 初始化2 更多...
 
void crossRoute (winux::String const &method, winux::String const &path, CrossRouteHandlerFunction handler)
 注册过径路由处理器 更多...
 
void route (winux::String const &method, winux::String const &path, RouteHandlerFunction handler)
 注册普通路由处理器 更多...
 
virtual int run (void *runParam) override
 运行 更多...
 
void onWebMainHandler (WebMainHandlerFunction handler)
 
- Public 成员函数 继承自 eienwebx::App
 App ()
 构造函数0 更多...
 
 App (winux::ConfigureSettings const &settings, AppServerExternalData *externalData)
 构造函数2 更多...
 
virtual ~App ()
 析构函数 更多...
 
bool init (winux::ConfigureSettings const &settings, AppServerExternalData *externalData)
 初始化App对象 更多...
 
int loadedDoFiles (winux::Mixed *arrDoFiles) const
 产品模式下,显示所有已经加载的do文件 更多...
 
bool unloadDoFile (winux::String const &doFullPath)
 卸载指定的do文件 更多...
 
winux::DllLoaderloadModule (winux::String const &modFullPath)
 加载一个模块,若已经加载则返回其引用. 更多...
 
int loadedModules (winux::Mixed *arrModules) const
 显示已经加载的模块 更多...
 
bool unloadModule (winux::String const &modFullPath)
 卸载一个模块 更多...
 
ApploadEnv ()
 加载可执行文件的环境变量 更多...
 
winux::String dumpEnv () const
 倾泻出应用全部环境变量 更多...
 
virtual ErrorCode execWebMain (winux::String const &doFullPath, Response *rsp, void *runParam, int *retCode)
 执行生成页面内容的过程,载入绝对路径doFullPath的do文件,并调用其WebMain()。 更多...
 
ErrorCode importDoFile (winux::String const &doFullPath, Response *rsp, void *runParam, int *retCode, winux::String *errDetail)
 import一个do文件,并把它的输出作为指定rsp的输出 更多...
 
void * getParam () const
 取得do传递的参数 更多...
 
template<typename _Ty >
_Ty getParam () const
 取得do传递的参数 更多...
 
void setParam (void *param)
 设置do传递参数 更多...
 
void * getRunParam () const
 取得从run()传进的参数 更多...
 
template<typename _Ty >
_Ty getRunParam () const
 取得从run()传进的参数 更多...
 
AppServerExternalDatagetExternalData ()
 取得外部定义的相关数据 更多...
 
void setExternalData (AppServerExternalData *data)
 设置外部定义的相关数据 更多...
 
SessionServergetSessServ ()
 取得SessionServer 更多...
 
void setSessServ (SessionServer *sessServ)
 设置SessionServer 更多...
 
- Public 成员函数 继承自 eiennet::Server
 Server ()
 构造函数0,不会启动服务,必须手动调用startup() 更多...
 
 Server (bool autoReadData, ip::EndPoint const &ep, int threadCount=4, int backlog=0, double serverWait=0.002, double verboseInterval=0.01, bool verbose=true)
 构造函数1,会启动服务 更多...
 
virtual ~Server ()
 
bool startup (bool autoReadData, ip::EndPoint const &ep, int threadCount=4, int backlog=0, double serverWait=0.002, double verboseInterval=0.01, bool verbose=true)
 启动服务器 更多...
 
void stop (bool b=true)
 是否停止服务运行 更多...
 
size_t getClientsCount () const
 获取客户连接数 更多...
 
void removeClient (winux::uint64 clientId)
 移除客户连接 更多...
 
void onClientDataNotifyHandler (ClientDataNotifyHandlerFunction handler)
 
void onClientDataArrivedHandler (ClientDataArrivedHandlerFunction handler)
 
void onCreateClientHandler (CreateClientHandlerFunction handler)
 

静态 Public 成员函数

static void InitPrivateData ()
 初始化HttpApp私有数据 更多...
 

Public 属性

eiennet::HttpServerConfig httpConfig
 HTTP服务器配置对象 更多...
 
- Public 属性 继承自 eienwebx::App
winux::ConfigureSettings settings
 配置对象 更多...
 
struct eienwebx::App::AppConfig appConfig
 
winux::StringStringMap environVars
 可执行文件的environ环境变量 更多...
 

静态 Public 属性

static HttpAppPrivateData PrivateData
 

Protected 成员函数

virtual void onClientDataArrived (winux::SharedPointer< eiennet::ClientCtx > clientCtxPtr, winux::Buffer data) override
 
virtual eiennet::ClientCtxonCreateClient (winux::uint64 clientId, winux::String const &clientEpStr, winux::SharedPointer< eiennet::ip::tcp::Socket > clientSockPtr) override
 
void _onClientRequestInternal (winux::SharedPointer< HttpRequestCtx > httpClientCtxPtr, http::Header &header, winux::AnsiString &body)
 
virtual void onWebMain (winux::SharedPointer< HttpRequestCtx > requestCtxPtr, eienwebx::Response &rsp)
 
- Protected 成员函数 继承自 eienwebx::App
void _clearModules ()
 清空已加载的模块和WebMain函数 更多...
 
ErrorCode _importDoFileDevelopment (winux::String const &doFullPath, Response *rsp, void *runParam, int *retCode, winux::String *errDetail)
 
ErrorCode _importDoFileProduction (winux::String const &doFullPath, Response *rsp, void *runParam, int *retCode, winux::String *errDetail)
 
- Protected 成员函数 继承自 eiennet::Server
winux::SharedPointer< ClientCtx > & _addClient (ip::EndPoint const &clientEp, winux::SharedPointer< ip::tcp::Socket > clientSockPtr)
 添加一个客户连接,会触发调用onCreateClient()创建客户场景对象 更多...
 
template<typename _Fx , typename... _ArgType>
void _postTask (winux::SharedPointer< ClientCtx > clientCtxPtr, _Fx fn, _ArgType &&...arg)
 往线程池投递任务 更多...
 
virtual void onClientDataNotify (winux::SharedPointer< ClientCtx > clientCtxPtr, size_t readableSize)
 

Protected 属性

eiennet::StaticFileMemoryCache _staticFileCache
 静态文件缓存 更多...
 
std::vector< std::unordered_map< winux::String, std::unordered_map< winux::String, CrossRouteHandlerFunction > > > _crossRouter
 过径路由器 [ { pathpart: { GET: handleGet, POST: handlePost, ... }, ... }, ... ] 更多...
 
std::unordered_map< winux::String, std::unordered_map< winux::String, RouteHandlerFunction > > _router
 普通路由器 { path: { GET: handleGet, POST: handlePost, ... }, ... } 更多...
 
WebMainHandlerFunction _WebMainHandler
 
- Protected 属性 继承自 eienwebx::App
SessionServer_sessServ
 会话服务器 更多...
 
void * _runParam
 来自run()传递进来的参数 更多...
 
void * _param
 来自setParam()传递进来的参数 更多...
 
AppServerExternalData_externalData
 创建App对象的程序传递进来的结构。由外部定义,定义是自定的,所在于全局名称空间::,可通过头文件定义结构再通过包含头文件去使用 更多...
 
std::map< winux::String, winux::SimplePointer< winux::DllLoader > > _loadedDlls
 已经加载的dll 更多...
 
std::map< winux::String, WebMainFunc_loadedWebMainFuncs
 已经取得的WebMain()指针 更多...
 
winux::Mutex _mtxApp
 互斥量,保护App共用成员数据 更多...
 
bool _isSetDoDirAsWorkDir
 是否设置Do文件目录作为工作目录,多线程环境下应该设为false 更多...
 
- Protected 属性 继承自 eiennet::Server
winux::ThreadPool _pool
 线程池 更多...
 
winux::RecursiveMutex _mtxServer
 互斥量保护服务器共享数据 更多...
 
ip::tcp::Socket _servSockA
 服务器监听套接字A 更多...
 
ip::tcp::Socket _servSockB
 服务器监听套接字B 更多...
 
std::map< winux::uint64, winux::SharedPointer< ClientCtx > > _clients
 客户映射表 更多...
 
winux::uint64 _cumulativeClientId
 客户唯一标识 更多...
 
bool _stop
 是否停止 更多...
 
bool _servSockAIsListening
 servSockA是否处于监听中 更多...
 
bool _servSockBIsListening
 servSockB是否处于监听中 更多...
 
bool _isAutoReadData
 是否自动读取客户到达的数据。当为true时,客户数据达到时调用ClientDataArrived事件,否则调用ClientDataNotify事件 更多...
 
double _serverWait
 服务器IO等待时间间隔(秒) 更多...
 
double _verboseInterval
 Verbose信息刷新间隔(秒) 更多...
 
bool _verbose
 显示提示信息 更多...
 
ClientDataNotifyHandlerFunction _ClientDataNotifyHandler
 
ClientDataArrivedHandlerFunction _ClientDataArrivedHandler
 
CreateClientHandlerFunction _CreateClientHandler
 

友元

class HttpRequestCtx
 

额外继承的成员函数

- Protected 类型 继承自 eienwebx::App
typedef int(* PFN_WebMain) (Response *, void *)
 do文件中WebMain()的类型 更多...
 
typedef winux::DllLoader::Function< PFN_WebMainWebMainFunc
 WebMain函数对象类型 更多...
 

详细描述

HttpApp类

App和Server合并

在文件 webx_HttpApp.hpp18 行定义.

成员类型定义说明

using eienwebx::HttpApp::CrossRouteHandlerFunction = std::function< bool ( winux::SharedPointer<HttpRequestCtx> requestCtxPtr, eienwebx::Response & rsp, winux::StringArray & urlPathPartArr, size_t i ) >

过径路由处理函数类型

在文件 webx_HttpApp.hpp27 行定义.

using eienwebx::HttpApp::RouteHandlerFunction = std::function< void ( winux::SharedPointer<HttpRequestCtx> requestCtxPtr, eienwebx::Response & rsp ) >

终点路由处理函数类型

在文件 webx_HttpApp.hpp29 行定义.

在文件 webx_HttpApp.hpp126 行定义.

构造及析构函数说明

eienwebx::HttpApp::HttpApp ( )

构造函数0

eienwebx::HttpApp::HttpApp ( winux::ConfigureSettings const &  settings,
AppServerExternalData externalData 
)

构造函数1

eienwebx::HttpApp::HttpApp ( winux::ConfigureSettings const &  settings,
AppServerExternalData externalData,
eiennet::ip::EndPoint const &  ep,
int  threadCount = 4,
int  backlog = 0,
double  serverWait = 0.002,
double  verboseInterval = 0.01,
bool  verbose = true,
int  cacheLifeTime = 86400 
)

构造函数2

参数
settings配置设置
externalData外部定义的数据
ep服务监听的EndPoint
threadCount线程池线程数量
backloglisten(backlog)
serverWait服务器IO等待时间
verboseIntervalverbose信息刷新间隔
verbose是否显示提示信息
cacheLifeTime静态文件缓存时间

成员函数说明

void eienwebx::HttpApp::_onClientRequestInternal ( winux::SharedPointer< HttpRequestCtx httpClientCtxPtr,
http::Header header,
winux::AnsiString body 
)
protected
void eienwebx::HttpApp::crossRoute ( winux::String const &  method,
winux::String const &  path,
CrossRouteHandlerFunction  handler 
)

注册过径路由处理器

参数
methodmethod为半角逗号','分隔的HTTP方法名字符串,可以是"*"表示通配所有HTTP方法
pathpath需以/开头
handler
bool eienwebx::HttpApp::init ( winux::ConfigureSettings const &  settings,
AppServerExternalData externalData 
)

初始化1

bool eienwebx::HttpApp::init ( winux::ConfigureSettings const &  settings,
AppServerExternalData externalData,
eiennet::ip::EndPoint const &  ep,
int  threadCount = 4,
int  backlog = 0,
double  serverWait = 0.002,
double  verboseInterval = 0.01,
bool  verbose = true,
int  cacheLifeTime = 86400 
)

初始化2

参数
settings配置设置
externalData外部定义的数据
ep服务监听的EndPoint
threadCount线程池线程数量
backloglisten(backlog)
serverWait服务器IO等待时间
verboseIntervalverbose信息刷新间隔
verbose是否显示提示信息
cacheLifeTime静态文件缓存时间
static void eienwebx::HttpApp::InitPrivateData ( )
static

初始化HttpApp私有数据

virtual void eienwebx::HttpApp::onClientDataArrived ( winux::SharedPointer< eiennet::ClientCtx clientCtxPtr,
winux::Buffer  data 
)
overrideprotectedvirtual

重载 eiennet::Server .

virtual eiennet::ClientCtx* eienwebx::HttpApp::onCreateClient ( winux::uint64  clientId,
winux::String const &  clientEpStr,
winux::SharedPointer< eiennet::ip::tcp::Socket clientSockPtr 
)
overrideprotectedvirtual

重载 eiennet::Server .

virtual void eienwebx::HttpApp::onWebMain ( winux::SharedPointer< HttpRequestCtx requestCtxPtr,
eienwebx::Response rsp 
)
protectedvirtual
void eienwebx::HttpApp::onWebMainHandler ( WebMainHandlerFunction  handler)
inline

在文件 webx_HttpApp.hpp126 行定义.

void eienwebx::HttpApp::route ( winux::String const &  method,
winux::String const &  path,
RouteHandlerFunction  handler 
)

注册普通路由处理器

参数
methodmethod为半角逗号','分隔的HTTP方法名字符串,可以是"*"表示通配所有HTTP方法
pathpath需以/开头
handler
virtual int eienwebx::HttpApp::run ( void *  runParam)
overridevirtual

运行

重载 eiennet::Server .

友元及相关函数文档

friend class HttpRequestCtx
friend

在文件 webx_HttpApp.hpp128 行定义.

类成员变量说明

std::vector< std::unordered_map< winux::String, std::unordered_map< winux::String, CrossRouteHandlerFunction > > > eienwebx::HttpApp::_crossRouter
protected

过径路由器 [ { pathpart: { GET: handleGet, POST: handlePost, ... }, ... }, ... ]

在文件 webx_HttpApp.hpp117 行定义.

std::unordered_map< winux::String, std::unordered_map< winux::String, RouteHandlerFunction > > eienwebx::HttpApp::_router
protected

普通路由器 { path: { GET: handleGet, POST: handlePost, ... }, ... }

在文件 webx_HttpApp.hpp119 行定义.

eiennet::StaticFileMemoryCache eienwebx::HttpApp::_staticFileCache
protected

静态文件缓存

在文件 webx_HttpApp.hpp114 行定义.

WebMainHandlerFunction eienwebx::HttpApp::_WebMainHandler
protected

在文件 webx_HttpApp.hpp126 行定义.

eiennet::HttpServerConfig eienwebx::HttpApp::httpConfig

HTTP服务器配置对象

在文件 webx_HttpApp.hpp104 行定义.

HttpAppPrivateData eienwebx::HttpApp::PrivateData
static

在文件 webx_HttpApp.hpp21 行定义.


该类的文档由以下文件生成: