/*static char sccsid[]="%Z% %M% %I% %E% %U%";*/
/************************************************************************/
/*																		*/
/*		akbstruct.h														*/
/*																		*/
/*			Coded by Akito Kobayashi	2010.6.2						*/
/*																		*/
/************************************************************************/
#ifndef _AKBSTRUCT_H
#define _AKBSTRUCT_H

/*  */

/* プロトコルＩＤ */
typedef struct Protcol {
	char  prt_ver;			/* プロトコルＩＤ */
	char  prt_send;	/* データ形式 */
	short prt_cmnd;		/* パケットコマンド */
} tdtProtcol;

/* 送信情報 */
typedef struct  {
	uchar  ind_thrd;	/* スレッドＮｏ */
	uchar  ind_disp;	/* 処理ＩＤ */
	short   ind_pano;	/* パケットＮｏ */
} tdtIndicate ;

/* プロトコルヘッダ */
typedef struct CommPackHead {
	tdtProtcol  cph_prt;	/* プロトコル情報 */
	tdtIndicate cph_dinf;	/* 転送先情報 */
	tdtIndicate cph_sinf;	/* 転送元情報 */
	INT4      cph_plen;
} tdtCommPackHead ;
typedef tdtCommPackHead *pCommPackHead; 

/* 属性（標準形式）構造体 */
typedef struct _format_S {	/* データ属性（標準形式） */
	uchar attr;			/* 属性＆精度         */
	uchar dlen;			/* データ長(0〜255)   */
/* char dummy[2]; */ 
} FORM_S;

/* 属性（拡張形式）構造体 */
typedef struct _format_F {	/* データ属性（拡張形式） */
	uchar attr;			/* 属性＆精度			*/
	uchar resv;			/* 未使用				*/
	uchar dlen[4];		/* データ長(0〜65535)	*/
} FORM_K;

/* 間接指定情報構造体 */
typedef struct IndirectInfo {
	char    ini_did;		/* データID				*/
	uchar   ini_spos;		/* 開始位置以降の長さ	*/
	char    ini_resv[2];		/* ダミーエリア			*/
	UINT4   ini_dpos;		/* データ開始位置		*/
	UINT4   ini_dlen;		/* データ長				*/
} tdtIndirectInfo;

/* 間接ファイル又は共有メモリ指定 */
typedef struct  Indirect {
	tdtIndirectInfo   idr_info;		/* 間接指定情報構造体 */
	char           *idr_data;		/* ファイル名又は共有メモリ名へのポインタ */
} tdtIndirect;

/* パラメータ情報取得構造体 */
typedef struct {
	char   pi_id;		/* データＩＤ: ' ','F','M'            */
	uchar  pi_attr;		/* 属性                               */
	uchar  pi_scale;	/* 精度                               */
	uchar  pi_code;		/* コード種別                         */
	long   pi_dlen;		/* データ長                           */
	long   pi_pos;		/* データ位置、ＢＩＮデータ、name、scale */
	long   pi_hlen;		/* ヘッダー長、Gid、precision         */
	long   pi_len;		/* パラメータの長さ、pScrCT、型指定定義データ長 */
	char   *pi_data;	/* ファイル名|データ|共有メモリ名     */
	uchar  pi_aux[2];	/* [0]:型指定定義型、[1]:オプション   */
	ushort pi_alen;		/* オプション                         */
	char   *pi_paux;	/* 属性指定配列のデータへのポインタ   */
} tdtInfoParm;

/* パケット管理テーブル（送受信用）*/
typedef struct {
	short sp_option;	/*		*/
	short sp_offset;	/*		*/
	char *sp_content;	/* パケット先頭アドレス		*/
	int   sp_len;		/* パケットの長さ			*/
	short sp_srcch;	/* Source Channel No		*/
	short sp_ch;		/* Destination Channel No	*/
} tdtRcSdPacketTable ;
typedef tdtRcSdPacketTable  *pRcSdPacketTable;

#define  tdtRcPacketTable	tdtRcSdPacketTable  
#define  pRcPacketTable	pRcSdPacketTable  
#define  tdtSdPacketTable	tdtRcSdPacketTable  
#define  pSdPacketTable	pRcSdPacketTable  

/* １パラメータヘッダー */
typedef	struct {
	char	ph_type;		/* パラメータ種別	*/
	uchar ph_plen;
	char	ph_resv[2];	/* 空き領域			*/
	INT4	ph_length;	/* パラメータ長		*/
} tdtPackHead;
typedef tdtPackHead  *pPackHead ;

/*** Struct for Message Comunication ***/
typedef struct tdtMsgCom {
	INT4    msg_hoid;		/* ホストアドレス	*/
	ushort  msg_prid;		/* プロセス番号		*/
	ushort  msg_clid;		/* クラス識別番号	*/
	ushort  msg_disp;	/* 処理ＩＤ			*/
	short   msg_pret;		/* 共通基盤からのリターンコード */
	char   *msg_pmsg;			/* パケットのデータ部						*/
	int     msg_mlen;		/* メッセージ長(バイト)						*/
	uchar   msg_resv;			/* 返信要求フラグ(発信元処理ＩＤ)			*/
	uchar   msg_aopt;	/* アプリケーション共通基盤処理オプション	*/
	uchar   msg_form;		/* パケット形式								*/
	uchar   msg_filc;		/* 間接ファイルの数							*/
	char  **msg_filv;		/* 間接ファイルのファイル名へのポインタ配列 */
} tdtMsgCom;

#endif	/* _AKBSTRUCT_H */
