/* mysvr_stab.h * サーバ用スタブのプロトタイプ宣言 */ #ifndef _MYSVR_STAB_H_ #define _MYSVR_STAB_H_ #ifndef APR_GENERAL_H #include "apr_general.h" #endif #ifndef APR_ERRNO_H #include "apr_errno.h" #endif #ifndef APR_SIGNAL_H #include "apr_signal.h" #endif #ifndef APR_THREAD_PROC_H #include "apr_thread_proc.h" #endif #ifndef APR_NETWORK_IO_H #include "apr_network_io.h" #endif #ifndef APR_FILE_IO_H #include "apr_file_io.h" #endif #ifndef _MYTT_H_ #include "mytt.h" #endif #ifndef _MYSTAB_H_ #include "mystab.h" #endif /* マルチスレッドの上限保持数 */ #define DEFAULT_NUM_THREADS 10 /* ソケットのタイムアウト(秒) */ #define DEFAULT_TIMEOUT_SEC 10 /* サーバ情報構造体 */ typedef struct _my_server_info_st { /* my_service_init で設定される項目 */ char *hostname; /* サーバホスト名 */ int port; /* ポート番号 */ int timeout_sec; /* タイムアウト秒 */ int num_threads; /* スレッド数 */ void *config; /* サーバ用個別コンヒグ情報 */ /* 自動設定される項目 */ apr_file_t *in; /* 標準入力 */ apr_file_t *out; /* 標準出力 */ apr_file_t *err; /* 標準エラー */ apr_socket_t *socket; /* サーバソケット */ char *ip_addr; /* サーバのIPアドレス */ } my_server_info; /* * サービス初期化関数 * 返り値: * 成功時:1 * 失敗時:0 * メモ: * コマンドライン引数から、svr_info の、hostname, port, timeout_sec, * num_threads, config の値を設定する。 * port の値は必ずセットすること。 * config は独自のコンヒグデータを使用する時にセットする。 * デフォルト値: * timeout_sec は DEFAULT_TIMEOUT_SEC がセットされる。 * num_threads は DEFAULT_NUM_THREADS がセットされる。 * hostname は NULL がセットされる。 * port は -1 がセットされる(port はデフォルトのままではサーバソケットの * オープン時にエラーとなる) * * 返り値: * 初期化成功時には 0、失敗時は 1 を返すこと。 */ int my_service_init ( int ac /* IN: コマンドライン引数の数 */ , char **av /* IN: コマンドライン引数の配列 */ , my_server_info *svr_info /* IN: サーバ情報 */ ); /* * サービス終期化関数 * error_flag には、サービス処理途中でエラーを検出した場合には * 1 がセットされる。 */ void my_service_finally ( int error_flag /* IN: エラーフラグ */ , my_server_info *svr_info /* IN: サーバ情報 */ ); /* * サービス処理関数 * 返り値: * 成功時:1 * 失敗時:0 */ int my_service_main( apr_pool_t *pool /* IN: サービス処理用メモリプール */ , apr_socket_t *socket /* IN: クライアントソケット */ , my_server_info *svr_info /* IN: サーバ情報 */ ); #endif /* _MYSVR_STAB_H_ */