www.pudn.com > AirAPIF.rar > AirAPIF.h
/* Copyright (C) FUJITSU LIMITED 1999-2001 */ /* $Id: AirAPIF.h,v 1.6 2001/03/05 15:57:43 JST age Exp $ */ /* This header file is public for users */ /* * $Log: AirAPIF.h,v $ * Revision 1.6 2001/03/05 15:57:43 JST age * 古川 AIR_EVENT_SYMBOLPORT 追加 * * Revision 1.5 2000/06/26 15:12:47 JST age * 古川 arch_list 追加 * * Revision 1.4 2000/05/22 18:53:29 JST age * 古川 friend 追加 * get_part_name 引数の型変更 * * Revision 1.3 2000/03/13 15:51:57 JST age * AirEventType の修正 * * Revision 1.2 2000/03/03 17:09:45 JST age * *** empty log message *** * * $Com: 古川 AIR_EVENT_SYMBOLPORT 追加 */ #ifndef AIR_APIF_H #define AIR_APIF_H #include#include #include #include #include "air_defs.h" #include "air_tabledef.h" class AirPart; class AirArch; class AirCfEnv; class AirCfMsg; enum AirEventKind { AIR_EVENT_APIF, AIR_EVENT_PART, AIR_EVENT_ARCH, AIR_EVENT_BLOCK, AIR_EVENT_PORT, AIR_EVENT_NET, AIR_EVENT_PAGE, AIR_EVENT_GROUP, AIR_EVENT_COMPONENT, AIR_EVENT_COMPONENTPORT, AIR_EVENT_SYMBOL, AIR_EVENT_SYMBOLPORT, AIR_EVENT_APPL, AIR_EVENT_KIND_NUM }; enum AirEventType { AIR_EVENT_ADD, AIR_EVENT_DEL, AIR_EVENT_MOD, AIR_EVENT_SEQ, AIR_EVENT_ASK, AIR_EVENT_TYPE_NUM }; enum AirEventMode { AIR_EVENT_BEFORE, AIR_EVENT_AFTER, AIR_EVENT_MODE_NUM }; enum AirEventOrder { AIR_EVENT_FIRST, AIR_EVENT_LAST }; typedef int32_t (*AirEventHandler)(AirArch* arch, // event handler AirDBKind kind, AirDBAnyRef obj); class AirAPIF { friend class AirPart; friend class AirArch; friend class AirIfArch; friend class AirSeq; friend ostream& operator<<(ostream& ostr, const AirAPIF& a); private: char* program_name; // プログラム名 char* program_version; // プログラムバージョン time_t program_date; // プログラム作成日付 uid_t uid; // UID char* username; // 実行者名 char* hostname; // ホスト名 char* hostip; // ホストIPアドレス pid_t pid; // PID char* cwd; // カレントディレクトリ AirCfEnv *env; // APIF 関数システムの環境 AirCfMsg *msg; // メッセージ環境 char* logfile; // ログファイル名 ofstream outlog; // ログ出力先 deque event[AIR_EVENT_KIND_NUM] // event前ハンドラ配列 [AIR_EVENT_TYPE_NUM] [AIR_EVENT_MODE_NUM]; static bool inhandler_f; // event handler 実行中か bool noleft_access_f; // アクセス記録を残さないか deque part_list; // アクセス中のPart達 AirPart* activate_part; // 活性化しているPart deque arch_list; // アクセス中のArch達 AirArch* activate_arch; // 活性化しているArch public: AirAPIF(void); // コンストラクタ ~AirAPIF(void); // デストラクタ public: int32_t init(int argc, char* argv[], // APIF初期化 const char* opt = AIR_ENV_OPT); int32_t release(void); // APIF終了化 int32_t set_program(char* name, // プログラム設定 char* version, time_t date); int32_t logging(const char* file); // ログファイルの設定 int32_t logoff(void); // 実行ログ記録の終了 int32_t add_handler(AirEventHandler handler, // event handler の追加 AirEventKind kind, AirEventType type, AirEventMode mode, AirEventOrder order); int32_t del_handler(AirEventHandler handler, // event handler の削除 AirEventKind kind, AirEventType type, AirEventMode mode); int32_t line_editor(const char* inputstring); // 言語入力 int32_t get_part_num(const char* dirname); // パート数の獲得 int32_t get_part_name(const char* dirname, // パート名の獲得 char**& partname, int32_t& partname_num); private: int32_t before_event(AirEventKind kind, // 実行前 event 実行 AirEventType type, AirDBAnyRef obj); int32_t after_event(AirEventKind kind, // 実行後 event 実行 AirEventType type, AirDBAnyRef obj); int32_t exec_event(AirEventKind kind, // event 実行 AirEventType type, AirEventMode mode, AirDBAnyRef obj); public: int32_t noleft_access(bool flag = true); // アクセスを残さない }; #endif /* AIR_APIF_H */