mysvr_stab.h

最終更新:2010/3/7

mysvr_stab.h

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_ */
Copyright (C) KAKU PROJECT (2009)KAKU PROJECT (2009)