fastdo  0.6.8
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 
73  virtual ErrorCode execWebMain( winux::String const & doFullPath, Response * rsp, void * runParam, int * retCode );
74 
82  ErrorCode importDoFile( winux::String const & doFullPath, Response * rsp, void * runParam, int * retCode, winux::String * errDetail );
83 
84  // attributes ---------------------------------------------------------------------------
86  void * getParam() const { return _param; };
87 
89  template < typename _Ty >
90  _Ty getParam() const { return reinterpret_cast<_Ty>(_param); };
91 
93  void setParam( void * param ) { this->_param = param; }
94 
96  void * getRunParam() const { return _runParam; };
97 
99  template < typename _Ty >
100  _Ty getRunParam() const { return reinterpret_cast<_Ty>(_runParam); };
101 
103  AppServerExternalData * getExternalData() { return _externalData; }
104 
106  void setExternalData( AppServerExternalData * data ) { _externalData = data; }
107 
109  SessionServer * getSessServ() { return _sessServ; }
110 
112  void setSessServ( SessionServer * sessServ ) { this->_sessServ = sessServ; }
113 
114 public:
116  //winux::Configure config;
119 
121  struct AppConfig
122  {
135 
136  AppConfig() : isProduction(false), maxUrlencodedPostSize(0), maxMultiFormPostSize(0)
137  {
138  }
139 
140  } appConfig;
141 
144 
145 protected:
147  void _clearModules();
148 
149  ErrorCode _importDoFileDevelopment( winux::String const & doFullPath, Response * rsp, void * runParam, int * retCode, winux::String * errDetail );
150  ErrorCode _importDoFileProduction( winux::String const & doFullPath, Response * rsp, void * runParam, int * retCode, winux::String * errDetail );
151 
153  void * _runParam;
154  void * _param;
156 
158  typedef int ( * PFN_WebMain )( Response *, void * );
159  std::map< winux::String, winux::SimplePointer<winux::DllLoader> > _loadedDlls;
160 
162  std::map< winux::String, WebMainFunc > _loadedWebMainFuncs;
163 
166 
167  friend class Request;
168  friend class FcgiRequest;
169  friend class CgiRequest;
170 
172 };
173 
174 
175 } // namespace eienwebx
ErrorCode
执行do文件的错误码
Definition: webx_App.hpp:17
SessionServer * getSessServ()
取得SessionServer
Definition: webx_App.hpp:109
__int64 int64
Definition: utilities.hpp:187
配置参数,从配置文件中读取的设置
Definition: webx_App.hpp:121
winux::int64 maxUrlencodedPostSize
当请求的Content-Type是application/x-www-form-urlencoded时,表单POST发送数据的最大大小 ...
Definition: webx_App.hpp:128
void setSessServ(SessionServer *sessServ)
设置SessionServer
Definition: webx_App.hpp:112
bool isProduction
isProduction指示是否以产品级模式运行.
Definition: webx_App.hpp:126
没有找到WebMain()函数
Definition: webx_App.hpp:21
_Ty getRunParam() const
取得从run()传进的参数
Definition: webx_App.hpp:100
#define EIENWEBX_DLL
SessionServer * _sessServ
会话服务器
Definition: webx_App.hpp:152
XString< tchar > String
Definition: utilities.hpp:216
Dll函数动态调用
Definition: system.hpp:279
Web功能的相关封装
winux::String uploadTmpPath
上传文件的临时目录
Definition: webx_App.hpp:132
更强大的配置文件类
Definition: archives.hpp:72
void setExternalData(AppServerExternalData *data)
设置外部定义的相关数据
Definition: webx_App.hpp:106
std::map< String, String > StringStringMap
Definition: utilities.hpp:229
void * _param
来自setParam()传递进来的参数
Definition: webx_App.hpp:154
bool _isSetDoDirAsWorkDir
是否设置Do文件目录作为工作目录,多线程环境下应该设为false
Definition: webx_App.hpp:165
winux::String outputTplPath
FASTDO信息输出模板的路径
Definition: webx_App.hpp:134
#define DISABLE_OBJECT_COPY(clsname)
Definition: utilities.hpp:81
std::map< winux::String, winux::SimplePointer< winux::DllLoader > > _loadedDlls
已经加载的dll
Definition: webx_App.hpp:159
DLL动态载入器
Definition: system.hpp:252
互斥量
Definition: threads.hpp:272
没有找到do文件
Definition: webx_App.hpp:20
App类,内部有Do文件载入/执行功能
Definition: webx_App.hpp:13
void * _runParam
来自run()传递进来的参数
Definition: webx_App.hpp:153
std::map< winux::String, WebMainFunc > _loadedWebMainFuncs
已经取得的WebMain()指针
Definition: webx_App.hpp:162
void setParam(void *param)
设置do传递参数
Definition: webx_App.hpp:93
代表一个客户响应
代表一个请求
AppServerExternalData * _externalData
创建App对象的程序传递进来的结构。由外部定义,定义是自定的,所在于全局名称空间::,可通过头文件定义结构...
Definition: webx_App.hpp:155
winux::Mutex _mtxApp
互斥量,保护App共用成员数据
Definition: webx_App.hpp:164
winux::StringStringMap environVars
可执行文件的environ环境变量
Definition: webx_App.hpp:143
混合体,能表示多种类型的值
Definition: utilities.hpp:750
AppServerExternalData * getExternalData()
取得外部定义的相关数据
Definition: webx_App.hpp:103
winux::int64 maxMultiFormPostSize
当请求的Content-Type是multipart/form-data时,多部分表单POST发送数据的最大大小
Definition: webx_App.hpp:130
winux::ConfigureSettings settings
配置对象
Definition: webx_App.hpp:118
void * getRunParam() const
取得从run()传进的参数
Definition: webx_App.hpp:96
_Ty getParam() const
取得do传递的参数
Definition: webx_App.hpp:90
winux::DllLoader::Function< PFN_WebMain > WebMainFunc
WebMain函数对象类型
Definition: webx_App.hpp:161
App服务器外部定义的公开数据
Definition: appserv.hpp:7
void * getParam() const
取得do传递的参数
Definition: webx_App.hpp:86