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) |