イベントハンドラ基本クラス [詳細]
#include <PGDialog.h>
Public 型 | |
typedef std::map< SGString, PGJsonResource > | MapList |
セッションIDとダイアログオブジェクトの連想配列 | |
typedef std::map< SGString, PGJsonResource >::iterator | MapIterator |
MapList のイテレーター | |
Public メソッド | |
PGDialog () | |
コンストラクタ | |
virtual | ~PGDialog () |
デストラクタ | |
virtual void | OnInit () |
初期化時コールバック関数 | |
virtual void | OnChangeBefore (PGClientSocket *pgsock, PGJsonCommand *json) |
他宛 CHANGE コマンド受信時コールバック関数 | |
virtual void | OnChange (PGClientSocket *pgsock, PGJsonCommand *json) |
自宛 CHANGE コマンド受信時コールバック関数 | |
virtual void | OnCondition (PGClientSocket *pgsock, PGJsonCommand *json) |
CONDITION コマンド受信時コールバック関数. | |
virtual void | OnUpdate (PGJsonObject *to, PGJsonObject *from) |
CONDITION コマンド受信時のUpdate処理の通知コールバック関数. | |
virtual void | OnTouch (PGClientSocket *pgsock, PGJsonObject *jobj, const SGString actiontype) |
端末が CONDITION コマンドを送信するトリガになったオブジェクトのコールバック通知関数 | |
virtual void | OnTimer (TimeVal time, unsigned int id) |
タイマー時コールバック関数 | |
virtual void | OnFinal () |
解放時コールバック関数 | |
virtual int | OnGetfile (PGClientSocket *pgsock, SGString file, SGString date, SGString objectname) |
GETFILEコマンド受信通知. | |
void | Init (const SGString &dialogname, const char *filename) |
オブジェクトの初期化 | |
PGJsonResource & | GetResourceUnique (const SGString &sessionid) |
リソースの参照 | |
PGJsonResource & | GetResourceShare () |
リソースの参照 | |
void | UpdateDialog (PGClientSocket *pgsock, PGJsonCommand *jo, PGJsonResource *resource) |
void | UpdateResourceUnique (PGJsonCommand *jo, const SGString &sessionid) |
リソースの更新 | |
void | UpdateResourceShare (PGJsonCommand *jo) |
リソースの更新 | |
bool | SendUpdateShare (bool allflag=false) |
ダイアログ更新 | |
bool | SendUpdateUnique (const SGString &sessionid, bool allflag=false) |
ダイアログ更新 | |
bool | LoadJsonShare () |
リソースの読込み | |
bool | LoadJsonUnique (const SGString &sessionid) |
リソースの読込み | |
int | AddSession (const SGString &sessionid) |
セッションの追加 | |
int | RemoveSession (const SGString &sessionid) |
セッションの削除 | |
void | SetTimerInterval (int time, unsigned int id) |
タイマーの登録、および開始、停止 | |
void | SetSingleTimerInterval (int time, unsigned int id) |
シングルタイマーの登録、および開始、停止 | |
Protected 変数 | |
SGString | mDialogName |
カレントダイアログ名 | |
SGString | mFileName |
ファイル名 | |
MapList | mSessionResourceList |
セッション毎ダイアログのリソースリスト |
イベントハンドラ基本クラス
イベントドリブンの枠組みを提供します。 ユーザーの操作により発生したイベントは、ダイアログ毎に振り分けられ、対応するオブジェクトに通知されます。 アプリケーション開発者は、ダイアログ毎に、このクラスを継承した実装クラスを作成して下さい。
typedef std::map<SGString,PGJsonResource> MapList |
セッションIDとダイアログオブジェクトの連想配列
typedef std::map<SGString,PGJsonResource>::iterator MapIterator |
MapList のイテレーター
PGDialog | ( | ) |
コンストラクタ
~PGDialog | ( | ) | [virtual] |
デストラクタ
void OnInit | ( | ) | [virtual] |
初期化時コールバック関数
初期化後に呼ばれます。
void OnChangeBefore | ( | PGClientSocket * | pgsock, | |
PGJsonCommand * | json | |||
) | [virtual] |
他宛 CHANGE コマンド受信時コールバック関数
他ダイアログの CHANGE コマンド受信時に呼ばれます。
pgsock | 受信ソケット | |
json | JSON コマンド |
void OnChange | ( | PGClientSocket * | pgsock, | |
PGJsonCommand * | json | |||
) | [virtual] |
自宛 CHANGE コマンド受信時コールバック関数
自ダイアログの CHANGE コマンド受信時に呼ばれます。
pgsock | 受信ソケット | |
json | JSON コマンド |
void OnCondition | ( | PGClientSocket * | pgsock, | |
PGJsonCommand * | json | |||
) | [virtual] |
CONDITION コマンド受信時コールバック関数.
CONDITION コマンド受信時に呼ばれます。
pgsock | 受信ソケット | |
json | JSON コマンド |
void OnUpdate | ( | PGJsonObject * | to, | |
PGJsonObject * | from | |||
) | [virtual] |
CONDITION コマンド受信時のUpdate処理の通知コールバック関数.
CONDITION コマンド受信時に、コマンドに含まれる更新オブジェクトについて 自身のリソースエリアを更新(自身へマージする)する為に通知コールバックされます。 このコールバック関数の基本クラスは空関数ではありません。実際にオブジェクトの各要素の 更新を行います。通常は基本クラスを呼ぶようにして下さい。
この OnUpdate は次の関数によって呼ばれる UpdateResource 関数から呼ばれます。
void PGDialog::UpdateResourceUnique( PGJsonCommand *jo, const SGString& sessionid)
void PGDialog::UpdateResourceShare( PGJsonCommand *jo )
to | 自身のオブジェクト | |
from | CONDITIONコマンド内の更新オブジェクトの1つ |
void OnTouch | ( | PGClientSocket * | pgsock, | |
PGJsonObject * | jobj, | |||
const SGString | actiontype | |||
) | [virtual] |
端末が CONDITION コマンドを送信するトリガになったオブジェクトのコールバック通知関数
端末が CONDITION コマンドを受信するきっかけになったオブジェクトを知ることができます。 押されたボタンに対する処理などを行って下さい。
pgsock | 受信ソケット | |
jobj | トリガとなったオブジェクト(Json) | |
actiontype | トリガとなった要因
Clicked オブジェクトがクリックされた ItemClicked GRIDで表示された項目がクリックされた ItemSelected PULLDOWNで表示された項目が選択された SlideTouched SLIDEBARのつまみが押下された(ドラッグ開始) SlideMoved SLIDEBARのつまみが変化した(ドラッグ中) SlideReleased SLIDEBARのつまみが離された(ドラッグ終了) Timer 指定した時間が経過した |
void OnTimer | ( | TimeVal | time, | |
unsigned int | id | |||
) | [virtual] |
タイマー時コールバック関数
タイマー時に呼び出されます。
void OnFinal | ( | ) | [virtual] |
解放時コールバック関数
解放時、開放直前に呼ばれます。
int OnGetfile | ( | PGClientSocket * | pgsock, | |
SGString | file, | |||
SGString | date, | |||
SGString | objectname | |||
) | [virtual] |
GETFILEコマンド受信通知.
GETFILEコマンドを受信した時に PGClientSocket::OnGetfile が呼び出されます。
通常、サーバは GETFILE コマンドを受信すると、指定されたファイルを読込み、PUTFILE コマンドとして送信します。
例外として、ファイルがJSONでかつ、そのダイアログのリソースが既に読込まれている場合は、ファイルを読まずに保持している リソースを送信する場合がある為、ダイアログクラスの OnGetfile がコールされます。
※DELETEやADDコマンドにより、ファイルとリソースに差異がある場合がある為。
ダイアログのリソース情報の共有エリアが存在する場合、接続中の全ての端末の画面を同じにする必要があるので、 指定されたJSONファイルを読むのではなく、現在のメモリ上に存在するダイアログ情報を送信します。
パラメータの objectname は端末が PUTFILE コマンドを受信した時に通知するオブジェクト名がセットされています。
PUTFILE コマンドを送信する時、要素名「ObjectName」として付加します。
file | ファイル名 | |
date | 端末にあるファイルの日時 | |
objectname | 端末が PUTFILE コマンドを受信した時に通知するオブジェクト名 |
void Init | ( | const SGString & | dialogname, | |
const char * | filename | |||
) |
オブジェクトの初期化
オブジェクトを初期化します。
dialogname | ダイアログ名 | |
filenam | ファイル名 |
PGJsonResource & GetResourceUnique | ( | const SGString & | sessionid | ) |
リソースの参照
ダイアログのリソース(個別エリア)を参照します。 個別エリアとは各セッション毎(ユーザ毎)に分かれたエリアです。
jo | コマンド | |
session | セッションID |
PGJsonResource & GetResourceShare | ( | ) |
リソースの参照
ダイアログのリソース(共有エリア)を参照します。
jo | コマンド |
void UpdateDialog | ( | PGClientSocket * | pgsock, | |
PGJsonCommand * | jo, | |||
PGJsonResource * | resource | |||
) |
void UpdateResourceUnique | ( | PGJsonCommand * | jo, | |
const SGString & | sessionid | |||
) |
リソースの更新
ダイアログのリソース(個別エリア)を更新します。 個別エリアとは各セッション毎(ユーザ毎)に分かれたエリアです。
jo | コマンド | |
session | セッションID |
void UpdateResourceShare | ( | PGJsonCommand * | jo | ) |
リソースの更新
ダイアログのリソース(共有エリア)を更新します。
jo | コマンド |
bool SendUpdateShare | ( | bool | allflag = false |
) |
ダイアログ更新
同じダイアログを開いている自分を含む全ユーザにUPDATEを送信 戻り値は、送信の必要なデータがあった場合true、送信する必要が無かった(更新されたデータが無い場合)場合はfalseを返します。 送信できた、できないではない事に注意して下さい。
bool SendUpdateUnique | ( | const SGString & | sessionid, | |
bool | allflag = false | |||
) |
ダイアログ更新
自分へUPDATEを送信します。 同じダイアログを開いている自分を含む全ユーザにUPDATEを送信する場合は SendUpdateShare() を使用して下さい。
戻り値は、送信の必要なデータがあった場合true、送信する必要が無かった(更新されたデータが無い場合)場合はfalseを返します。 送信できた、できないではない事に注意して下さい。
pgsock | 送信ソケット |
bool LoadJsonShare | ( | ) |
リソースの読込み
リソース管理メモリの共有エリアへダイアログ リソースをロードします。
bool LoadJsonUnique | ( | const SGString & | sessionid | ) |
リソースの読込み
リソース管理メモリのセッションID毎に用意された個別エリアへダイアログ リソースをロードします。
sessionid | セッションID |
int AddSession | ( | const SGString & | sessionid | ) |
セッションの追加
セッションを追加します。(ダイアログ情報は追加しない。)
sessionid | セッションID |
int RemoveSession | ( | const SGString & | sessionid | ) |
セッションの削除
セッションを削除します。
sessionid | セッションID |
void SetTimerInterval | ( | int | time, | |
unsigned int | id | |||
) |
タイマーの登録、および開始、停止
タイマーの登録と解除を行います。
time | インターバル時間(ms) | |
id | 識別用ID(任意の値) |
void SetSingleTimerInterval | ( | int | time, | |
unsigned int | id | |||
) |
シングルタイマーの登録、および開始、停止
シングルタイマー(ワンショットタイマー)の登録と解除を行います。
time | インターバル時間(ms) | |
id | 識別用ID(任意の値) |
SGString mDialogName [protected] |
カレントダイアログ名
MapList mSessionResourceList [protected] |
セッション毎ダイアログのリソースリスト