fastdo  0.6.16
webx_App.hpp
浏览该文件的文档.
1 #pragma once
2 
4 
5 namespace eienwebx
6 {
7 
8 class SessionServer;
9 class Request;
10 class Response;
11 
14 {
15 public:
17  enum ErrorCode
18  {
23  };
24 
26  App();
27 
32  App( winux::ConfigureSettings const & settings, AppServerExternalData * externalData );
33 
35  virtual ~App();
36 
38  bool init( winux::ConfigureSettings const & settings, AppServerExternalData * externalData );
39 
41  virtual int run( void * runParam );
42 
44  int loadedDoFiles( winux::Mixed * arrDoFiles ) const;
45 
49  bool unloadDoFile( winux::String const & doFullPath );
50 
54  winux::DllLoader & loadModule( winux::String const & modFullPath );
55 
57  int loadedModules( winux::Mixed * arrModules ) const;
58 
62  bool unloadModule( winux::String const & modFullPath );
63 
65  App & loadEnv();
66 
68  winux::String dumpEnv() const;
69 
76  virtual ErrorCode execWebMain( winux::String const & doFullPath, Response * rsp, void * runParam, int * retCode );
77 
89  ErrorCode importDoFile( winux::String const & doFullPath, Response * rsp, void * runParam, int * retCode, winux::String * errDetail );
90 
91  // attributes ---------------------------------------------------------------------------
93  void * getParam() const { return _param; };
94 
96  template < typename _Ty >
97  _Ty getParam() const { return reinterpret_cast<_Ty>(_param); };
98 
100  void setParam( void * param ) { this->_param = param; }
101 
103  void * getRunParam() const { return _runParam; };
104 
106  template < typename _Ty >
107  _Ty getRunParam() const { return reinterpret_cast<_Ty>(_runParam); };
108 
110  AppServerExternalData * getExternalData() { return _externalData; }
111 
113  void setExternalData( AppServerExternalData * data ) { _externalData = data; }
114 
116  SessionServer * getSessServ() { return _sessServ; }
117 
119  void setSessServ( SessionServer * sessServ ) { this->_sessServ = sessServ; }
120 
121 public:
124 
126  struct AppConfig
127  {
140 
141  AppConfig() : isProduction(false), maxUrlencodedPostSize(0), maxMultiFormPostSize(0)
142  {
143  }
144 
145  } appConfig;
146 
149 
150 protected:
152  void _clearModules();
153 
155  ErrorCode _importDoFileDevelopment( winux::String const & doFullPath, Response * rsp, void * runParam, int * retCode, winux::String * errDetail );
157  ErrorCode _importDoFileProduction( winux::String const & doFullPath, Response * rsp, void * runParam, int * retCode, winux::String * errDetail );
158 
160  void * _runParam;
161  void * _param;
163 
165  typedef int ( * PFN_WebMain )( Response *, void * );
166  std::map< winux::String, winux::SimplePointer<winux::DllLoader> > _loadedDlls;
167 
169  std::map< winux::String, WebMainFunc > _loadedWebMainFuncs;
170 
173 
174  friend class Request;
175  friend class FcgiRequest;
176  friend class CgiRequest;
177 
179 };
180 
181 
182 } // namespace eienwebx
ErrorCode
执行do文件的错误码
Definition: webx_App.hpp:17
SessionServer * getSessServ()
取得SessionServer *
Definition: webx_App.hpp:116
__int64 int64
Definition: utilities.hpp:232
配置参数,从配置文件中读取的设置
Definition: webx_App.hpp:126
winux::int64 maxUrlencodedPostSize
当请求的Content-Type是application/x-www-form-urlencoded时,表单POST发送数据的最大大小 ...
Definition: webx_App.hpp:133
void setSessServ(SessionServer *sessServ)
设置SessionServer *
Definition: webx_App.hpp:119
bool isProduction
isProduction指示是否以产品级模式运行.
Definition: webx_App.hpp:131
没有找到WebMain()函数
Definition: webx_App.hpp:21
_Ty getRunParam() const
取得从run()传进的参数
Definition: webx_App.hpp:107
#define EIENWEBX_DLL
SessionServer * _sessServ
会话服务器
Definition: webx_App.hpp:159
XString< tchar > String
Definition: utilities.hpp:261
Dll函数动态调用
Definition: system.hpp:292
Web功能的相关封装
winux::String uploadTmpPath
上传文件的临时目录
Definition: webx_App.hpp:137
更强大的配置文件类
Definition: archives.hpp:71
void setExternalData(AppServerExternalData *data)
设置外部定义的相关数据
Definition: webx_App.hpp:113
std::map< String, String > StringStringMap
Definition: utilities.hpp:274
void * _param
来自setParam()传递进来的参数
Definition: webx_App.hpp:161
bool _isSetDoDirAsWorkDir
是否设置Do文件目录作为工作目录,多线程环境下应该设为false
Definition: webx_App.hpp:172
winux::String outputTplPath
FASTDO信息输出模板的路径
Definition: webx_App.hpp:139
#define DISABLE_OBJECT_COPY(clsname)
Definition: utilities.hpp:85
std::map< winux::String, winux::SimplePointer< winux::DllLoader > > _loadedDlls
已经加载的dll
Definition: webx_App.hpp:166
DLL动态载入器
Definition: system.hpp:265
互斥量
Definition: threads.hpp:349
没有找到do文件
Definition: webx_App.hpp:20
App类,内部有Do文件载入/执行功能
Definition: webx_App.hpp:13
void * _runParam
来自run()传递进来的参数
Definition: webx_App.hpp:160
std::map< winux::String, WebMainFunc > _loadedWebMainFuncs
已经取得的WebMain()指针
Definition: webx_App.hpp:169
void setParam(void *param)
设置可能在do中传递的参数
Definition: webx_App.hpp:100
代表一个客户响应
代表一个请求
Definition: webx_Request.hpp:9
AppServerExternalData * _externalData
创建App对象的程序传递进来的结构。由外部定义,定义是自定的,所在于全局名称空间::,可通过头文件定义结构...
Definition: webx_App.hpp:162
winux::Mutex _mtxApp
互斥量,保护App共用成员数据
Definition: webx_App.hpp:171
winux::StringStringMap environVars
可执行文件的environ环境变量
Definition: webx_App.hpp:148
混合体,能表示多种类型的值
Definition: utilities.hpp:1440
AppServerExternalData * getExternalData()
取得外部定义的相关数据
Definition: webx_App.hpp:110
winux::int64 maxMultiFormPostSize
当请求的Content-Type是multipart/form-data时,多部分表单POST发送数据的最大大小
Definition: webx_App.hpp:135
winux::ConfigureSettings settings
配置设置对象
Definition: webx_App.hpp:123
void * getRunParam() const
取得从run()传进的参数
Definition: webx_App.hpp:103
_Ty getParam() const
取得可能在do中由setParam()传递的参数
Definition: webx_App.hpp:97
winux::DllLoader::Function< PFN_WebMain > WebMainFunc
WebMain()函数对象类型
Definition: webx_App.hpp:168
App服务器外部定义的公开数据
Definition: appserv.hpp:7
void * getParam() const
取得可能在do中由setParam()传递的参数
Definition: webx_App.hpp:93