BBS
BBS.pmはサーバアプリケーションを構築するためのコアモジュールです。
BBS.pm側にあるサーバシステムの操作やサーバシステムとアプリケーションとのデータのやり取りを提供する関数を呼び出すことで行います。
システム関連
ノード関連
ノードの接続または切断のステータス管理やノードが持つデータテーブル(ノードテーブル)の管理を行います。
内部処理はNode(ノード制御)が行っています。
関数名 操作 nodes() 接続ノード一覧を返します node() ノードのデータ領域を返します from_node() ノードのデータ領域を返します
イベント関連
本システムは発動するイベントによって各々の処理を行います。
イベントは次の7つになります。
イベント名 条件 onConnect 新たなノードが接続したとき onDisconnect 接続するノードが何らかの理由で切断されたとき onSend 関数send()が呼び出されたとき onRecv onAccessイベントでノードからデータを受信したとき Output ノードに対してデータの出力処理を行う SysWork アプリケーションのシステム処理を行う AppWork アプリケーション処理を行う 各イベント処理ではハンドラの呼び出しが行われますが、onConnect, onDisconnectでは 接続維持のための処理、onSend, onRecvではイベントとハンドラでのデータの受け渡しが行われます。
※onSendのイベント処理は関数send()に内包しているため、関数として定義していません。
関数名 操作 _onconnect() 接続イベント処理 _ondisconnect() 切断イベント処理 _onrecv() 受信イベント処理 _serve() サーバイベント処理 _output() 出力処理 _syswork() アプリケーションシステム処理 _appwork() アプリケーション処理
ハンドラ関連
イベントが発生したときに任意の処理を行うためのハンドラが設けられています。
ハンドラは次の7つです。
ハンドラ名 ハンドラ種別 目的 onConnect システム 接続したクライアントに対する準備(初期)処理を行います。 onDisconnect システム 切断するクライアントに対する終了処理を行います。 onSend システム クライアントへ送信するデータの処理を行います。 onRecv システム クライアントから受信したデータの処理を行います。 Output システム クライアントへデータを送出します。 SysWork システム アプリケーションのシステム処理を行います。 AppWork アプリケーション アプリケーション(または応答)処理を行います。 ハンドラにはシステムハンドラとアプリケーションハンドラの2種類があります。
システムハンドラはノードとの接続、切断、通信、また、アプリケーションシステムの処理などのイベントが発生することで呼び出されます。 システムハンドラのルーチン設定はサーバ開始前に行い、サーバ実行中に設定を変更するようなことはまずありません。
アプリケーションハンドラはアプリケーション処理(AppWork)イベントが発生したときに呼び出されますが、 このハンドラは各ノードごとに設けられていて、イベントが発生すると接続する全てのノードを順番に呼び出します。 アプリケーションハンドラの設定はサーバ開始後に行い、ノードの要求や状態によって処理を切り替えることでさまざまな振る舞いを行うことができます。
内部処理はHandler(ハンドラ制御)が行っています。
関数名 操作 setsyshandler() システムハンドラの設定 setapphandler() アプリケーションハンドラの設定 sethandler() アプリケーションハンドラの設定
通信関連
BBS.pmの通信処理はハンドラによって行うため、一般的な方法とは違ったアプローチで通信を行います。
受信についてはonRecvイベントからハンドラを介して受信データを取得するので、受信を行うための関数はありません。 送信については送信を行うための関数を提供しています。
関数名 操作 send() ソケットへデータを送信する from_send() ソケットへデータを送信する
その他
実験的機能やおまけ機能を定義しています。
関数名 操作 termtrap() プログラムの中断を無効化します