• R/O
  • SSH
  • HTTPS

sf-04webserver: Commit


Commit MetaInfo

Revisión471 (tree)
Tiempo2011-09-12 09:35:30
Autoryuh

Log Message

(empty log message)

Cambiar Resumen

Diferencia incremental

--- 1xx/04WebServer/trunk/InterruptEvents.h (nonexistent)
+++ 1xx/04WebServer/trunk/InterruptEvents.h (revision 471)
@@ -0,0 +1,23 @@
1+#pragma once
2+
3+
4+/*!
5+ 中断管理クラス
6+*/
7+class CInterruptEvents
8+{
9+public:
10+ //! 中断を確認
11+ virtual int IsInterrupt() = 0;
12+
13+ //! 中断原因を取得
14+ virtual CString GetInterruptInfo() = 0;
15+
16+ //! 中断を待機
17+ virtual int WaitInterrupt(int timeout) = 0;
18+
19+ //! 中断処理イベントをすべて取得
20+ virtual void GetAllInterruptEvents(CArray<HANDLE> &events) = 0;
21+};
22+
23+
--- 1xx/04WebServer/trunk/CGIManager.h (revision 470)
+++ 1xx/04WebServer/trunk/CGIManager.h (revision 471)
@@ -1,6 +1,56 @@
1+/*!
2+ CGI管理クラス
3+
4+ CGIの実行は、CGI実行環境を生成してから行う
5+
6+ CCGIProcessBase -> CFastCGIProcess
7+ -> CCGIProcess
8+*/
19 #pragma once
10+#include "TextInfoExceptionBase.h"
11+#include "InterruptEvents.h"
212
313 /*!
14+ CGIプロセスエラー例外
15+*/
16+DEFINE_TEXT_INFO_EXCEPTION(CCGIProcessException);
17+
18+
19+/*!
20+ CGI実行環境
21+
22+ インタプリタ+スクリプトは、クラス生成時に指定
23+*/
24+class CCGIProcessBase
25+{
26+public:
27+ ///////////////////////////////////////////////////////////////////////////////
28+ // 実行系インタフェース
29+ ///////////////////////////////////////////////////////////////////////////////
30+ //! CGI実行開始(throw CCGIProcessException)
31+ virtual void StartCGIProcess() = 0;
32+
33+ //! CGI実行通常終了
34+ virtual void CleanupCGIProcess() = 0;
35+
36+ ///////////////////////////////////////////////////////////////////////////////
37+ // 通信系インタフェース
38+ ///////////////////////////////////////////////////////////////////////////////
39+ //! 環境変数設定
40+ virtual void AddRequestHeaderEnv(CKeyDataArray &envs);
41+
42+ //! リクエストボディを書き込み(throw CCGIProcessException)
43+ virtual void WriteRequestBody(CBuffer &data, CInterruptEvents &breakEvents);
44+
45+ //! レスポンスヘッダ取得(throw CCGIProcessException)
46+ virtual void ReadResponseHeader(CKeyDataArray &resHeaders, CInterruptEvents &breakEvents);
47+
48+ //! レスポンスボディを読み出し(throw CCGIProcessException)
49+ virtual void ReadResponseBody(CBuffer &data, CInterruptEvents &breakEvents);
50+};
51+
52+
53+/*!
454 CGI管理クラス
555
656 CGI同時実行数、FastCGIの管理を行う
@@ -20,6 +70,9 @@
2070 //! 停止
2171 void Stop();
2272
73+ //! インタプリタ取得
74+ int GetNewCGIProcess(int cgiProcessType, CString commandLine);
75+
2376 protected:
2477 ///////////////////////////////////////////////////////////////////////////////
2578 // メンバ変数
--- 1xx/04WebServer/trunk/Connection.h (revision 470)
+++ 1xx/04WebServer/trunk/Connection.h (revision 471)
@@ -8,6 +8,7 @@
88 #include "ProtocolSocket.h"
99 #include "AcceptedSocketQueue.h"
1010 #include "TextInfoExceptionBase.h"
11+#include "InterruptEvents.h"
1112
1213 /*!
1314 接続の処理状態
@@ -50,26 +51,32 @@
5051 /*!
5152 レスポンス処理の中断を確認する
5253 */
53-class CConnectionInterrupt
54+class CConnectionInterrupt : public CInterruptEvents
5455 {
5556 public:
5657 CConnectionInterrupt(CConnection *connection);
5758 CConnectionInterrupt(CConnectionInterrupt &other);
5859
60+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
61+ // 過去の互換
62+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
5963 //! 中断を確認
60- int IsInterrupt();
64+ operator int();
6165
66+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
67+ // CInterruptEvents
68+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
6269 //! 中断を確認
63- operator int();
70+ virtual int IsInterrupt();
6471
6572 //! 中断原因を取得
66- CString GetInterruptInfo();
73+ virtual CString GetInterruptInfo();
6774
6875 //! 中断を待機
69- int WaitInterrupt(int timeout);
76+ virtual int WaitInterrupt(int timeout);
7077
7178 //! 中断処理イベントをすべて取得
72- void GetAllInterruptEvents(CArray<HANDLE> &events);
79+ virtual void GetAllInterruptEvents(CArray<HANDLE> &events);
7380
7481 private:
7582 //! 親の接続
Show on old repository browser