本クラスライブラリは、WIDEプロジェクト ライフラインワーキンググループの主催するIAA災害訓練のためのWindows95/NT版IAA生存者情報登録クライアントプログラムの作成を支援するためのものである。 本クラスライブラリは、IAAクラスライブラリを利用する。
本クラスライブラリはIAAクラスライブラリ、 IAA生存者情報登録プロトコル仕様書などとともに公開され、 ライフラインワーキンググループに属さない人たちにも、 クライアントプログラムの開発者としてIAA災害訓練に参加してもらうことを意図している。
本クラスライブラリは、IAAアプリケーションプログラム開発者が、 IAA生存者情報登録プロトコル over SMTPをWindows95/NTから実行するクライアントプログラムを作成するのを支援するためのものである。 本クラスライブラリを使用するためには、 IAAクラスライブラリおよびIAA生存者情報登録プロトコル over SMTP仕様書を取得する必要がある。 以降に利用環境および使用方法の概要を述べる。
本クラスライブラリは、Windows95/NT用で、 Microsoft Visual C++ Ver 4.0以上で利用可能である。
本クラスライブラリの利用者は、
本クラスライブラリを利用するには、 まずIAAクラスライブラリ(IAA.zip)を適当なディレクトリ(以降IAA_SOURCESと呼ぶ)に展開し(IAAディレクトリが作成され、 そこにIAAクラスライブラリは展開される)、 次に、 IAA_SOURCESディレクトリでIAA_REGISTクラスライブラリ(IAA_REGIST.zip)を展開すると、 IAA_REGISTディレクトリが作成され、そこに本クラスライブラリは展開される。 展開されるファイルは以下のとおり。
| IAA_REGIST.h | IAA_REGISTクラスのインターフェイスと必要な定義 |
| IAA_REGIST.cpp | IAA_REGISTクラスのインプリメンテーション |
| IAA_VAL.h | IAA_VALクラスのインターフェイスと必要な定義 |
| IAA_VAL.cpp | IAA_VALクラスのインプリメンテーション |
| IAA_REGIST.dsp | 本クラスライブラリのプロジェクトファイル |
| IAA_REGIST.dsw | 本クラスライブラリのプロジェクトワークスペースファイル |
| IAA_REGIST.mak | 本クラスライブラリのmakeファイル |
| IAA_REGIST.lib | 本クラスライブラリのライブラリファイル |
| Commonディレクトリ | 本クラスライブラリで使用するWinsockクラスライブラリ* |
| Msvclibsディレクトリ | 本クラスライブラリで使用するWinsockライブラリ* |
| IAA_REGIST.html | 本ファイル |
本β版は、Windows95/NT4.0上のVC++5.0でのみ動作確認されている。 他の環境での確認はされていないので、問題が発見された場合には報告を頂きたい。
リリース版では、利用するWinsockライブラリが変更される可能性がある。
本クラスライブラリは、 入力データオブジェクトに設定されたデータをIAA生存者情報登録メッセージに変換し、 プロトコルパラメータオブジェクトに設定されたパラメータにしたがって、 そのメッセージをSMTP(Simple Mail Transfer Protocol)を使って伝送する実行オブジェクトクラスを提供している。 提供されているクラスは以下のとおり。
IAA_DATA_REGISTIAA_DATA_DUMMY(ダミークラス)IAA_PROTOCOL_REGISTIAA_REGISTIAA_DATA_REGISTは、プロトコル実行器の入力となるもので、
IAA_DATA_DUMMYは、 実行オブジェクトクラステンプレートへの引数として使われるダミークラスで、 それ以外には必要としない。 通常は、実行オブジェクトクラスとして、 既にテンプレートに引数を適用済みのIAA_REGISTクラスを用いるので、 利用する必要はない。
IAA_PROTOCOL_REGISTは、プロトコル実行器であり、 プロトコルパラメータを設定するために用いるオブジェクトクラスである。
IAA_REGISTは、IAAテンプレートクラスを用いた実行オブジェクトクラスで、
本クラスライブラリを利用したWindows95/NT版IAA生存者情報登録クライアントプログラムは、 概ね以下のような流れとなる。
以降、各クラスの詳細を記す。
IAA_REGISTクラスライブラリは、 IAA生存者情報登録プロトコル over SMTPのWindows95/NT版クライアントプログラムを作成するためのライブラリであり、 IAAクラスライブラリを利用する。
本クラスライブラリを利用するには、
(IAA_SOURCES)\IAA\IAA.h(IAA_SOURCES)\IAA_REGIST\IAA_REGIST.h(IAA_SOURCES)\IAA_REGIST\Commonにあるいくつかのヘッダファイルも利用するので、
includeパスを通しておく必要がある。
また、
(IAA_SOURCES)\IAA_REGIST\IAA_REGIST.lib(IAA_SOURCES)\IAA_REGIST\Msvclibs\wsock32.lib
2.2節において述べたとおり、
IAAアプリケーションプログラムでは本クラスライブラリを利用する場合、
入力データオブジェクトに生存者情報を与えてプロトコルを実行する。
よって、以降では入力データオブジェクトクラスであるIAA_DATA_REGISTクラスの仕様を述べる。
[]内は、省略不可能なパラメータであり、
{}内は、省略可能なパラメータである。
例文中では、iaaは実行オブジェクト、
iaa_data, iaa_data2は入力データオブジェクト、
iaa_protocolはプロトコルパラメータオブジェクトとする。
lname | 姓(JMS漢字) |
fname | 名(JMS漢字) |
lyomi | 姓の読み仮名(JMSひらがな) |
fyomi | 名の読み仮名(JMSひらがな) |
iname | 国際名(ASCII文字、必須ではない) |
reptr | 報告者名(JMS漢字&ASCII文字) |
place | 場所(JMS漢字) |
note | 備考(JMS漢字&ASCII文字、必須ではない) |
stat | 状況(1桁整数、1:生存、2:軽傷、3:重傷、4:死亡) |
how | 確認方法(1桁整数、1:直接、2:伝聞) |
relate | 続柄(1桁整数、1:本人、2:家族、3:他人) |
sdate1 | 確認年(4桁整数、1970-2037) |
sdate2 | 確認月(2桁整数、1-12) |
sdate3 | 確認日(2桁整数、1-31) |
sdate4 | 確認時(2桁整数、0-23) |
解説
IAA_DATA_REGIST [実データオブジェクト]
例
IAA_DATA_REGIST iaa_data;
戻り値
引数
解説
IAA_DATA_REGIST::Consistency()で利用される)。
bool Set<内部表現名>([データ])
例
iaa_data.Setlname("山田");
戻り値
引数
解説
GetLastError()によって得ることができる。
char *Get<内部表現名>()
例
char *a = iaa_data.Getfyomi();
戻り値
引数
解説
bool SetData([データオブジェクト])
例
iaa_data.SetData(iaa_data2);
戻り値
引数
解説
GetLastError()によって得ることができる。
bool GetData([データオブジェクト])
例
iaa_data2.GetData(iaa_data);
戻り値
引数
解説
GetLastError()によって得ることができる。
bool Consistency()
例
iaa_data.Consistency();
戻り値
引数
解説
GetLastError()によって得ることができる。
char *Presentation()
例
char *Message = iaa_data.Presentation();
戻り値
引数
解説
GetLastError()によって得ることができる。
bool Representation([メッセージ])
例
iaa_data.Representation(Message);
戻り値
引数
解説
IAA_ERROR GetLastError()
例
IAA_ERROR a = iaa.GetLastError();
戻り値
引数
解説
IAAアプリケーションプログラムでは本クラスライブラリを利用する場合、
プロトコルパラメータオブジェクトにSMTPサーバ、
SMTPポート、From行、IAAサーバを与えてプロトコルを実行する。
以降ではプロトコルパラメータオブジェクトクラスであるIAA_PROTOCOL_REGISTクラスの仕様を述べる。
[]内は、省略不可能なパラメータであり、
{}内は、省略可能なパラメータである。
例文中では、iaaは実行オブジェクト、
iaa_dataは入力データオブジェクト、
iaa_protocol, iaa_protocol2はプロトコルパラメータオブジェクトとする。
IAA_PROTOCOL_REGIST [実プロトコルパラメータオブジェクト]
例
IAA_PROTOCOL_REGIST iaa_protocol;
戻り値
引数
解説
bool SetProtocol([プロトコルパラメータオブジェクト])
例
iaa_protocol.SetProtocol(iaa_protocol2);
戻り値
引数
解説
GetLastError()によって得ることができる。
bool SetProtocol([Current Instance], [Prev Instance], [SMTPサーバ], [SMTPポート], [ユーザー], [IAAサーバ])
例
iaa_protocol.SetProtocol(hInstance, hPrevInstance, "mailserv.iaa.wide.ad.jp", 25, "iaaregistry@iaa.wide.ad.jp", "registry@iaa.wide.ad.jp");
戻り値
引数
解説
GetLastError()によって得ることができる。
bool InitProtocol()
例
iaa_protocol.InitProtocol();
戻り値
引数
解説
GetLastError()によって得ることができる。
エラーがある場合には、初期化は行われず、元のエラーを返す。
char *DoProtocol([メッセージ])
例
char *Message = iaa_protocol.DoProtocol(iaa_data.Presentation());
戻り値
引数
解説
DoCallback()を呼び出す。
詳細なエラーは、GetLastError()によって得ることができる。
IAA_ERROR GetLastError()
例
IAA_ERROR a = iaa_protocol.GetLastError();
戻り値
引数
解説
bool SetCallback([コールバックオブジェクト])
例
iaa_protocol.SetCallback(&iaa);
戻り値
引数
解説
GetLastError()によって得ることができる。
実行オブジェクト(IAA_REGIST)はプロトコルの実行時に自分自身をコールバックオブジェクトとして設定し、
内包するDoCallback()をコールバックとして呼び出してもらうことで、
プロトコル実行器の終了を検出する。
IAAアプリケーションプログラムでは本クラスライブラリを利用する場合、
実行オブジェクトに入力データオブジェクトとプロトコルパラメータオブジェクトを設定し、
プロトコルを実行する。
以降では実行オブジェクトクラスであるIAA_REGISTクラスの仕様を述べる。
[]内は、省略不可能なパラメータであり、
{}内は、省略可能なパラメータである。
例文中では、iaaは実行オブジェクト、
iaa_dataは入力データオブジェクト、
iaa_protocolはプロトコルパラメータオブジェクトとする。
IAA_REGIST [実行オブジェクト]
例
IAA_REGIST iaa;
戻り値
引数
解説
bool SetData([入力データオブジェクト])
例
iaa.SetData(iaa_data);
戻り値
引数
解説
GetLastError()によって得ることができる。
bool GetData([出力データオブジェクト])
例
iaa.GetData(iaa_data);
戻り値
引数
解説
bool SetProtocol([プロトコルパラメータオブジェクト])
例
iaa.SetProtocol(iaa_protocol);
戻り値
引数
解説
GetLastError()によって得ることができる。
bool InitProtocol()
例
iaa.InitProtocol()
戻り値
引数
解説
GetLastError()によって得ることができる。
bool DoProtocol()
例
iaa.DoProtocol();
戻り値
引数
解説
Done()によって知ることができる。
詳細なエラーは、GetLastError()によって得ることができる。
bool Done()
例
iaa.Done();
戻り値
引数
解説
IAA_ERROR GetLastError()
例
IAA_ERROR a = iaa.GetLastError();
戻り値
引数
解説
IAA_REGISTクラスライブラリを拡張するためには、 IAA_REGISTクラスライブラリの動作原理を理解する必要がある。 以降では、IAA_REGISTクラスライブラリの内部動作について詳細に解説する。
本β版は拡張に耐えないので解説しない。
本クラスライブラリの動作をテストするためのテストプログラムとして、IAA_TEST.zipを用意した。 IAA_SOURCESディレクトリに展開すると、IAA_TESTディレクトリが作成され、 そこにテストプログラムは展開される。展開されるファイルは以下のとおり。
| IAA_TEST.cpp | テストプログラム本体 |
| IAA_TEST.dsp | テストプログラムのプロジェクトファイル |
| IAA_TEST.dsw | テストプログラムのプロジェクトワークスペースファイル |
| IAA_TEST.mak | テストプログラムのmakeファイル |
本β版では、テストプログラムはWindows95/NT4.0上のVC++5.0でのみ動作確認されている。 他の環境での確認はされていないので、問題が発見された場合には報告を頂きたい。
使用する際には、IAA_TEST.cppのWinMain関数内、59行目からのソースブロック、
// Set Protocol Parameters
// 使うときには下のブロックのコメントをはずし、必要なところを埋める(はずさないとエラー)
if (!protocol.SetProtocol(hInstance, hPrevInstance, // おまじない
/*
"", 25, // SMTPサーバ名とポート番号
"iaaregistry@iaa.wide.ad.jp", // From
"")) { // IAA生存者情報登録サーバのメールアドレス
*/
MessageBox(NULL, "Set Protocol Parameter Error! But it's fatal.", "Fatal Error", MB_OK | MB_ICONWARNING);
return (0);
}
のコメントをはずし、空文字列となっているSMTPサーバ名、 IAA生存者情報登録サーバのメールアドレスを埋めて、 ビルドする。
このプログラムを実行すると、 83行目からのSet Datas部分に指定された生存者情報をIAA生存者情報登録メッセージに変換し、 宛先をIAA情報登録サーバとして、 そのメッセージを本体とするメールをSMTPサーバに送信し、配送を依頼する。 プログラムの実行中は何も表示されないので、終了を確かめるには、 タスクマネージャー(CTRL+ALT+DELETE)を使って、タスクが存在しているかどうかを確かめる必要がある。