Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/ntshell/webserver/websocket_fbs.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r279 r321  
    44 *  Copyright (C) 2017 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
    42  *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
     28 *
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 *  @(#) $Id$
     
    5237
    5338/*
    54  * 固定長バッファ可変長ストリーム
     39 * 固定長バッファ可変長ストリーム
    5540 */
    5641
     
    6550
    6651#ifndef WEBSOCKET_MEMPOOL_GET_TMO
    67 #define WEBSOCKET_MEMPOOL_GET_TMO       (0)                     /* メモリプール取得時のタイムアウト指定 */
     52#define WEBSOCKET_MEMPOOL_GET_TMO       (0)                     /* メモリプール取得時のタイムアウト指定 */
    6853#endif /* WEBSOCKET_MEMPOOL_GET_TMO */
    6954
    7055#ifndef NUM_WEBSOCKET_MEMPOOL_BLOCK
    71 #define NUM_WEBSOCKET_MEMPOOL_BLOCK (60)                /* 電文用メモリブロックの数 */
     56#define NUM_WEBSOCKET_MEMPOOL_BLOCK (60)                /* 電文用メモリブロックの数 */
    7257#endif /* NUM_WEBSOCKET_MEMPOOL_BLOCK */
    7358
    7459#ifndef WEBSOCKET_MEMPOOL_BLOCK_SIZE
    75 #define WEBSOCKET_MEMPOOL_BLOCK_SIZE (256)      /* 電文用メモリブロックのサイズ */
     60#define WEBSOCKET_MEMPOOL_BLOCK_SIZE (256)      /* 電文用メモリブロックのサイズ */
    7661#endif /* WEBSOCKET_MEMPOOL_BLOCK_SIZE */
    7762
    78 typedef unsigned int WS_FBS_SIZE_T;     /* size_t相当  */
    79 typedef int WS_FBS_SSIZE_T;                     /* ssize_t相当 */
    80 
    81 /* T_WS_FST_BLK管理領域サイズ */
     63typedef unsigned int WS_FBS_SIZE_T;     /* size_t相当  */
     64typedef int WS_FBS_SSIZE_T;                     /* ssize_t相当 */
     65
     66/* T_WS_FST_BLK管理領域サイズ */
    8267#define DEF_WS_EDT_HDR_LEN (sizeof(intptr_t))
    8368
    84 /* 管理領域サイズ(64byte - sizeof(T_MSG)) */
     69/* 管理領域サイズ(64byte - sizeof(T_MSG)) */
    8570/* #define DEF_WS_FBS_LIB_HDR_LEN ((WEBSOCKET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */
    8671#define DEF_WS_FBS_LIB_HDR_LEN (64 - DEF_WS_EDT_HDR_LEN)
    8772
    88 /* 管理領域を含むブロックに保持するデータサイズ */
     73/* 管理領域を含むブロックに保持するデータサイズ */
    8974#define DEF_WS_FBS_FST_DAT_LEN (64)
    9075
    91 /* リンクポインタé
    92 åˆ—のサイズ(byte) */
     76/* リンクポインタ配列のサイズ(byte) */
    9377#define DEF_WS_FBS_LNK_LEN (WEBSOCKET_MEMPOOL_BLOCK_SIZE - DEF_WS_EDT_HDR_LEN - DEF_WS_FBS_LIB_HDR_LEN - DEF_WS_FBS_FST_DAT_LEN)
    9478
    95 /* 固定長バッファ最大サイズ */
     79/* 固定長バッファ最大サイズ */
    9680#define DEF_WS_FBS_BUF_MAXLEN ((DEF_WS_FBS_LNK_LEN / sizeof(void *)) * WEBSOCKET_MEMPOOL_BLOCK_SIZE + DEF_WS_FBS_FST_DAT_LEN)
    9781
    98 /* 子要素バッファのサイズ */
     82/* 子要素バッファのサイズ */
    9983#define DEF_WS_FBS_SUB_BUF_LEN WEBSOCKET_MEMPOOL_BLOCK_SIZE
    10084
    101 /* 電文の種別(å†
    102 å®¹ã¯ä»®) */
     85/* 電文の種別(内容は仮) */
    10386typedef enum
    10487{
    105         WS_FBS_TYPE_BLANK               =       0,              /* 未使用ストリーム */
    106         WS_FBS_TYPE_INTERNAL    =       1,              /* å†
    107 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ */
    108         WS_FBS_TYPE_WEBSOCKET   =       2               /* WEBSOCKET電文 */
     88        WS_FBS_TYPE_BLANK               =       0,              /* 未使用ストリーム */
     89        WS_FBS_TYPE_INTERNAL    =       1,              /* 内部メッセージ */
     90        WS_FBS_TYPE_WEBSOCKET   =       2               /* WEBSOCKET電文 */
    10991} TA_WS_MSG_TYPE;
    11092
    111 /* リンクポインタé
    112 åˆ—に列挙される、子要素バッファ */
     93/* リンクポインタ配列に列挙される、子要素バッファ */
    11394typedef struct
    11495{
     
    11697} T_WS_SUB_BLK;
    11798
    118 /* リンクポインタé
    119 åˆ— */
     99/* リンクポインタ配列 */
    120100typedef union
    121101{
     
    124104} T_WS_FBS_LNK;
    125105
    126 /* 管理領域(64byte - sizeof(T_MSG)) */
     106/* 管理領域(64byte - sizeof(T_MSG)) */
    127107typedef struct
    128108{
    129         uint16_t        length;                 /* メッセージ長 */
    130         uint16_t        type;                   /* メッセージタイプ */
     109        uint16_t        length;                 /* メッセージ長 */
     110        uint16_t        type;                   /* メッセージタイプ */
    131111        union{
    132                 ID mbxid;                               /* 送信å
    133 ƒãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ID(å†
    134 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼‰ */
     112                ID mbxid;                               /* 送信元メールボックスID(内部メッセージ) */
    135113        }sender;
    136114        union{
    137                 ID mbxid;                               /* 送信å
    138 ˆãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ID(å†
    139 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼‰ */
     115                ID mbxid;                               /* 送信先メールボックスID(内部メッセージ) */
    140116        }target;
    141117        union{
    142                 ID mbxid;                               /* 返信å
    143 ˆãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ID(å†
    144 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼‰ */
     118                ID mbxid;                               /* 返信先メールボックスID(内部メッセージ) */
    145119        }reply;
    146120
    147         int                     rd;                             /*      読み取りヘッドæƒ
    148 å ±     */
    149         int                     wr;                             /*      書き込みヘッドæƒ
    150 å ±     */
     121        int                     rd;                             /*      読み取りヘッド情報       */
     122        int                     wr;                             /*      書き込みヘッド情報       */
    151123} T_WS_FBS_HDR;
    152124
    153 /* 管理領域を含むブロックの構造 */
     125/* 管理領域を含むブロックの構造 */
    154126typedef struct
    155127{
    156128        uint8_t _msg[DEF_WS_EDT_HDR_LEN];       /* T_MSG */
    157         T_WS_FBS_HDR    hdr;    /*      管理領域  64byte  - sizeof(T_MSG)   */
     129        T_WS_FBS_HDR    hdr;    /*      管理領域  64byte  - sizeof(T_MSG)   */
    158130        uint8_t                 _gap[DEF_WS_FBS_LIB_HDR_LEN - sizeof(T_WS_FBS_HDR)];
    159         T_WS_FBS_LNK    lnk;    /*      リンクポインタé
    160 åˆ—    128byte                 */
     131        T_WS_FBS_LNK    lnk;    /*      リンクポインタ配列       128byte                 */
    161132        uint8_t                 payload[DEF_WS_FBS_FST_DAT_LEN];
    162133} T_WS_FST_BLK;
     
    168139} WS_FBS_ID;
    169140
    170 /* メッセージキュー */
     141/* メッセージキュー */
    171142typedef struct ws_fbs_queue
    172143{
    173         T_WS_FST_BLK    *pk_head;               /* å
    174 ˆé ­ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ */
    175         T_WS_FST_BLK    *pk_last;               /* 末尾のメッセージ */
     144        T_WS_FST_BLK    *pk_head;               /* 先頭のメッセージ */
     145        T_WS_FST_BLK    *pk_last;               /* 末尾のメッセージ */
    176146} T_WS_FBS_QUEUE;
    177147
    178148extern ID ws_mempoolid;
    179149
    180 /* メモリブロック取得 ok:ポインタ NG:NULL */
     150/* メモリブロック取得 ok:ポインタ NG:NULL */
    181151void *_ws_fbs_mbx_get(WS_FBS_SIZE_T fa_req_size);
    182152
    183 /* メモリブロック解放 ok:0 NG:非0 */
     153/* メモリブロック解放 ok:0 NG:非0 */
    184154ER _ws_fbs_mbx_rel(void *p);
    185155
    186156/*
    187  * 領域確保
    188  *      引数
    189  *              WS_FBS_SIZE_T   fa_req_size             è¦æ±‚バッファサイズ(byte)
     157 * 領域確保
     158 *      引数
     159 *              WS_FBS_SIZE_T   fa_req_size             要求バッファサイズ(byte)
    190160 *                                                                              max: DEF_WS_FBS_BUF_MAXLEN
    191  *              WS_FBS_ID               *fp_id                  確保したFBS-IDの格納å
    192 ˆ
    193  *      戻り値
    194  *              ER                              0:ok 非0:NG
     161 *              WS_FBS_ID               *fp_id                  確保したFBS-IDの格納先
     162 *      戻り値
     163 *              ER                              0:ok 非0:NG
    195164 */
    196165ER _ws_fbs_cre(WS_FBS_SIZE_T fa_req_size, WS_FBS_ID *fp_id);
    197166
    198167/*
    199  * 領域解放
    200  *      引数
    201  *              ws_fbs_id型    確保したFBS-ID
    202  *      戻り値
    203  *              ER                              0:ok, 非0:NG
     168 * 領域解放
     169 *      引数
     170 *              ws_fbs_id型      確保したFBS-ID
     171 *      戻り値
     172 *              ER                              0:ok, 0:NG
    204173 */
    205174ER _ws_fbs_del(WS_FBS_ID fa_id);
    206175
    207176/*
    208  * 保持データの有無
    209  *      引数
    210  *              ws_fbs_id型    確保したFBS-ID
    211  *      戻り値
    212  *              bool_t                  0:無し, 1:あり
     177 * 保持データの有無
     178 *      引数
     179 *              ws_fbs_id型      確保したFBS-ID
     180 *      戻り値
     181 *              bool_t                  0:無し, 1:あり
    213182 */
    214183bool_t _ws_fbs_exist_data(WS_FBS_ID fa_id);
    215184
    216185/*
    217  * 保持データ長の取得
    218  *      引数
    219  *              ws_fbs_id型    確保したFBS-ID
    220  *      戻り値
    221  *              WS_FBS_SSIZE_T  保持しているデータの長さ(byte) -1:NG
     186 * 保持データ長の取得
     187 *      引数
     188 *              ws_fbs_id型      確保したFBS-ID
     189 *      戻り値
     190 *              WS_FBS_SSIZE_T  保持しているデータの長さ(byte) -1:NG
    222191 */
    223192WS_FBS_SSIZE_T _ws_fbs_get_datalen(WS_FBS_ID fa_id);
    224193
    225194/*
    226  * 読み取りカーソルの位置取得
    227  *      引数
    228  *              ws_fbs_id型    確保したFBS-ID
    229  *      戻り値
    230  *              WS_FBS_SIZE_T   å
    231 ˆé ­ã‹ã‚‰ã®çµ¶å¯¾ä½ç½® -1:NG
     195 * 読み取りカーソルの位置取得
     196 *      引数
     197 *              ws_fbs_id型      確保したFBS-ID
     198 *      戻り値
     199 *              WS_FBS_SIZE_T   先頭からの絶対位置 -1:NG
    232200 */
    233201WS_FBS_SSIZE_T _ws_fbs_get_rpos(WS_FBS_ID fa_id);
    234202
    235203/*
    236  * 読み取りカーソルの位置設定
    237  *      引数
    238  *              ws_fbs_id型    確保したFBS-ID
    239  *              WS_FBS_SIZE_T   fa_pos  設定する位置(å
    240 ˆé ­ã‹ã‚‰ã®çµ¶å¯¾ä½ç½®)
    241  *      戻り値
    242  *              ER                              0:ok, 非0:NG
     204 * 読み取りカーソルの位置設定
     205 *      引数
     206 *              ws_fbs_id型      確保したFBS-ID
     207 *              WS_FBS_SIZE_T   fa_pos  設定する位置(先頭からの絶対位置)
     208 *      戻り値
     209 *              ER                              0:ok, 非0:NG
    243210 */
    244211ER _ws_fbs_set_rpos(WS_FBS_ID fa_id, WS_FBS_SSIZE_T fa_pos);
    245212
    246213/*
    247  * 読み取りカーソルの位置移動
    248  *      引数
    249  *              ws_fbs_id型    確保したFBS-ID
    250  *              WS_FBS_SIZE_T   fa_seek 移動量(現状、前進のみ)
    251  *      戻り値
    252  *              ER                              0:ok, 非0:NG
     214 * 読み取りカーソルの位置移動
     215 *      引数
     216 *              ws_fbs_id型      確保したFBS-ID
     217 *              WS_FBS_SIZE_T   fa_seek 移動量(現状、前進のみ)
     218 *      戻り値
     219 *              ER                              0:ok, 0:NG
    253220 */
    254221ER _ws_fbs_seek_rpos(WS_FBS_ID fa_id, WS_FBS_SSIZE_T fa_seek);
    255222
    256223/*
    257  * 任意指定位置の1byte読み取り
     224 * 任意指定位置の1byte読み取り
    258225 */
    259226int _ws_fbs_peek(WS_FBS_ID fa_id, WS_FBS_SSIZE_T fa_seek);
    260227
    261228/*
    262  * 任意指定位置の1byte書き込み
     229 * 任意指定位置の1byte書き込み
    263230 */
    264231ER _ws_fbs_poke(WS_FBS_ID fa_id, WS_FBS_SSIZE_T fa_seek, int fa_val);
    265232
    266233/*
    267  * データ追加
    268  *      引数
    269  *              ws_fbs_id型    確保したFBS-ID
    270  *              const void *    fa_dat  追加するデータ
    271  *              WS_FBS_SSIZE_T  fa_len  追加する長さ(byte)
    272  *      戻り値
    273  *              ER                              0:ok, 非0:NG
     234 * データ追加
     235 *      引数
     236 *              ws_fbs_id型      確保したFBS-ID
     237 *              const void *    fa_dat  追加するデータ
     238 *              WS_FBS_SSIZE_T  fa_len  追加する長さ(byte)
     239 *      戻り値
     240 *              ER                              0:ok, 0:NG
    274241 */
    275242ER _ws_fbs_add_data(WS_FBS_ID fa_id, const void *fa_dat, WS_FBS_SSIZE_T fa_len);
    276243
    277244/*
    278  * データ追加(領域を自動的に拡張する)
    279  *      引数
    280  *              ws_fbs_id型    確保したFBS-ID
    281  *              const void *    fa_dat  追加するデータ
    282  *              WS_FBS_SSIZE_T  fa_len  追加する長さ(byte)
    283  *      戻り値
    284  *              ER                              0:ok, 非0:NG
     245 * データ追加(領域を自動的に拡張する)
     246 *      引数
     247 *              ws_fbs_id型      確保したFBS-ID
     248 *              const void *    fa_dat  追加するデータ
     249 *              WS_FBS_SSIZE_T  fa_len  追加する長さ(byte)
     250 *      戻り値
     251 *              ER                              0:ok, 0:NG
    285252 */
    286253ER _ws_fbs_add_data_ex(WS_FBS_ID fa_id, const void *fa_dat, WS_FBS_SSIZE_T fa_len);
    287254
    288255/*
    289  * データ取得
    290  *      引数
    291  *              ws_fbs_id型    確保したFBS-ID
    292  *              void *                  fa_buf          取得するバッファ
    293  *              WS_FBS_SSIZE_T  fa_maxlen       å–得する長さ(byte)
    294  *              WS_FBS_SSIZE_T  *p_len          取得した長さ(byte)
    295  *      戻り値
    296  *              ER                              0:ok, 非0:NG
     256 * データ取得
     257 *      引数
     258 *              ws_fbs_id型      確保したFBS-ID
     259 *              void *                  fa_buf          取得するバッファ
     260 *              WS_FBS_SSIZE_T  fa_maxlen       取得する長さ(byte)
     261 *              WS_FBS_SSIZE_T  *p_len          取得した長さ(byte)
     262 *      戻り値
     263 *              ER                              0:ok, 0:NG
    297264 */
    298265ER _ws_fbs_get_data(WS_FBS_ID fa_id, void *fa_buf, WS_FBS_SSIZE_T fa_maxlen,
Note: See TracChangeset for help on using the changeset viewer.