mysvr_stab.h
最終更新:2010/3/7
001: /* mysvr_stab.h
002: * サーバ用スタブのプロトタイプ宣言
003: */
004:
005: #ifndef _MYSVR_STAB_H_
006: #define _MYSVR_STAB_H_
007:
008: #ifndef APR_GENERAL_H
009: #include "apr_general.h"
010: #endif
011:
012: #ifndef APR_ERRNO_H
013: #include "apr_errno.h"
014: #endif
015:
016: #ifndef APR_SIGNAL_H
017: #include "apr_signal.h"
018: #endif
019:
020: #ifndef APR_THREAD_PROC_H
021: #include "apr_thread_proc.h"
022: #endif
023:
024: #ifndef APR_NETWORK_IO_H
025: #include "apr_network_io.h"
026: #endif
027:
028: #ifndef APR_FILE_IO_H
029: #include "apr_file_io.h"
030: #endif
031:
032: #ifndef _MYTT_H_
033: #include "mytt.h"
034: #endif
035:
036: #ifndef _MYSTAB_H_
037: #include "mystab.h"
038: #endif
039:
040: /* マルチスレッドの上限保持数 */
041: #define DEFAULT_NUM_THREADS 10
042:
043: /* ソケットのタイムアウト(秒) */
044: #define DEFAULT_TIMEOUT_SEC 10
045:
046:
047: /* サーバ情報構造体 */
048:
049: typedef struct _my_server_info_st {
050:
051: /* my_service_init で設定される項目 */
052:
053: char *hostname; /* サーバホスト名 */
054: int port; /* ポート番号 */
055:
056: int timeout_sec; /* タイムアウト秒 */
057: int num_threads; /* スレッド数 */
058:
059: void *config; /* サーバ用個別コンヒグ情報 */
060:
061: /* 自動設定される項目 */
062:
063: apr_file_t *in; /* 標準入力 */
064: apr_file_t *out; /* 標準出力 */
065: apr_file_t *err; /* 標準エラー */
066:
067: apr_socket_t *socket; /* サーバソケット */
068: char *ip_addr; /* サーバのIPアドレス */
069:
070: } my_server_info;
071:
072:
073: /*
074: * サービス初期化関数
075: * 返り値:
076: * 成功時:1
077: * 失敗時:0
078: * メモ:
079: * コマンドライン引数から、svr_info の、hostname, port, timeout_sec,
080: * num_threads, config の値を設定する。
081: * port の値は必ずセットすること。
082: * config は独自のコンヒグデータを使用する時にセットする。
083: * デフォルト値:
084: * timeout_sec は DEFAULT_TIMEOUT_SEC がセットされる。
085: * num_threads は DEFAULT_NUM_THREADS がセットされる。
086: * hostname は NULL がセットされる。
087: * port は -1 がセットされる(port はデフォルトのままではサーバソケットの
088: * オープン時にエラーとなる)
089: *
090: * 返り値:
091: * 初期化成功時には 0、失敗時は 1 を返すこと。
092: */
093: int my_service_init (
094: int ac /* IN: コマンドライン引数の数 */
095: , char **av /* IN: コマンドライン引数の配列 */
096: , my_server_info *svr_info /* IN: サーバ情報 */
097: );
098:
099: /*
100: * サービス終期化関数
101: * error_flag には、サービス処理途中でエラーを検出した場合には
102: * 1 がセットされる。
103: */
104: void my_service_finally (
105: int error_flag /* IN: エラーフラグ */
106: , my_server_info *svr_info /* IN: サーバ情報 */
107: );
108:
109: /*
110: * サービス処理関数
111: * 返り値:
112: * 成功時:1
113: * 失敗時:0
114: */
115:
116: int my_service_main(
117: apr_pool_t *pool /* IN: サービス処理用メモリプール */
118: , apr_socket_t *socket /* IN: クライアントソケット */
119: , my_server_info *svr_info /* IN: サーバ情報 */
120: );
121: #endif /* _MYSVR_STAB_H_ */
![]() | KAKU PROJECT (2009) |