#include <baseRTC.h>
Public メソッド | |
Header () | |
コンストラクタ。timeのみ自動初期化 | |
Header (const std::string &category, const std::string &type, const std::string &sender_name, const std::string &id=std::string(), const std::string &tag=std::string()) | |
コンストラクタ。 | |
int | readFromXml (std::istream &is) |
入力streamからXml Serialization に関するHeader情報を読み, 自身を更新する。 | |
int | readFromXml (const std::string &xml) |
入力文字列からXml Serialization に関するHeader情報を読み, 自身を更新する。 | |
int | writeToXml (std::ostream &os) const |
出力streamへXml Serialization に関するHeader情報を書く | |
Public 変数 | |
std::string | category |
データ or モジュールのカテゴリ | |
std::string | type |
データタイプ | |
std::string | sender_name |
送信コンポーネント名 | |
std::string | id |
モジュールID(同一モジュールが複数の時) | |
std::string | tag |
タグ文字列(データに関するその他任意の情報) | |
double | time |
送信時刻 [s] from unix epoch | |
unsigned int | hdr_version |
ヘッダのバージョン | |
Static Public 変数 | |
static const int | HEADER_MAJOR_VERSION = 0 |
ヘッダのメイジャーバージョン | |
static const int | HEADER_MINOR_VERSION = 0 |
ヘッダのマイナーバージョン | |
static const int | HEADER_VERSION = HEADER_MAJOR_VERSION*1000 + HEADER_MINOR_VERSION |
ヘッダのバージョン。 | |
static const char | HEADER_TAG [] |
ヘッダを格納する際のタグ文字列 |
XMLへオブジェクトをシリアライズする場合,必ず下記のヘッダー構造体を 最初にシリアライズしなければならない。
林原先生の最初のXML仕様案を参考に,category, sender_name, 時刻,及びヘッダ 自身のバージョンを格納している。これらの情報の詳細な意味付け,モジュー ル毎の使用規則は議論の必要あり。
シリアライズされたデータの先頭には,必ず下記のヘッダ情報が含まれる。 書込み側でこれを保証すること。(writeHeaderを使用)。
ヘッダ情報の後には任意のオブジェクトが含まれて良いが,ヘッダ情報と格 納されるオブジェクト情報については,読み書き側で厳密に合意がとれてい る必要がある。すなわち,読み側と書き側で共通のデータ構造を定義し,ヘッ ダ情報を元にしてデータ型の判断,処理の分岐方法について取り決める必要 がある。
(2009/12/04追記) 現在考えられている使用方法は以下の通り
通信データを表現するクラスを作成し,シリアライズ/デシリアライズ を行うメソッドを用意する。この場合,
ostringstream ost; //何らかのストリームを用意
Header hdr("???", "??", "?????"); //定められた書式 hdr.writeToXml(ost);
実際のデータをここで送信
istringstream ist; 読み出しストリームを用意。適宜初期化
Header hdr;
if (hdr.readFromXml(ist) < 0) { エラー処理 }
if (hdr.category=="X" && hdr.sender_name=="YYY" && hdr.type=="Hoge") { HogeData hd; if (hd.readFromXml(ist) < 0) { エラー: 送受信規約に違反 } hdを使った処理を行う } else if (hdr.category=="X" && hdr.sender_name=="Y2" && hdr.type=="Fuga") { FugaData fd; if (fd.readFromXml(ist) < 0) { エラー: 送受信規約に違反 } fdを使った処理を行う }
baseRTC::Header::Header | ( | ) |
コンストラクタ。timeのみ自動初期化
baseRTC::Header::Header | ( | const std::string & | category, | |
const std::string & | type, | |||
const std::string & | sender_name, | |||
const std::string & | id = std::string() , |
|||
const std::string & | tag = std::string() | |||
) |
コンストラクタ。
category, type, sender_name, id, tagを初期化。timeは生成時刻となる
int baseRTC::Header::readFromXml | ( | std::istream & | is | ) |
入力streamからXml Serialization に関するHeader情報を読み, 自身を更新する。
[in,out] | is | シリアライズされた結果のXMLを含むストリーム |
0 | 以上であれば成功。失敗すると負の値を返す |
int baseRTC::Header::readFromXml | ( | const std::string & | xml | ) |
入力文字列からXml Serialization に関するHeader情報を読み, 自身を更新する。
[in] | xml | シリアライズされた結果のXML文字列 |
0以上 | 成功。 | |
negative | 失敗。失敗の場合中身は空になる |
int baseRTC::Header::writeToXml | ( | std::ostream & | os | ) | const |
出力streamへXml Serialization に関するHeader情報を書く
[in,out] | os | 書き込み先stream |
0以上 | 成功。 | |
negative | 失敗 |
std::string baseRTC::Header::category |
データ or モジュールのカテゴリ
std::string baseRTC::Header::type |
データタイプ
std::string baseRTC::Header::sender_name |
送信コンポーネント名
std::string baseRTC::Header::id |
モジュールID(同一モジュールが複数の時)
std::string baseRTC::Header::tag |
タグ文字列(データに関するその他任意の情報)
double baseRTC::Header::time |
送信時刻 [s] from unix epoch
unsigned int baseRTC::Header::hdr_version |
ヘッダのバージョン
const int baseRTC::Header::HEADER_MAJOR_VERSION = 0 [static] |
ヘッダのメイジャーバージョン
const int baseRTC::Header::HEADER_MINOR_VERSION = 0 [static] |
ヘッダのマイナーバージョン
const int baseRTC::Header::HEADER_VERSION = HEADER_MAJOR_VERSION*1000 + HEADER_MINOR_VERSION [static] |
ヘッダのバージョン。
const char baseRTC::Header::HEADER_TAG[] [static] |
ヘッダを格納する際のタグ文字列