Build TOP Environments

開発者向け

共通

同期と非同期
提供されるクラス

ChmpxNodeクラス

ChmpxNode::InitializeOnServer()
ChmpxNode::InitializeOnSlave()
ChmpxNode::Open()
ChmpxNode::Close()
ChmpxNode::Send()
ChmpxNode::Broadcast()
ChmpxNode::Receive() - スレーブノード用
ChmpxNode::Receive() - サーバーノード用
ChmpxNode::Reply()
ChmpxNode::IsChmpxExit()


共通

同期と非同期

CHMPX Node.js アドオンライブラリのクラスのメソッドは、同期処理とCallback関数を指定できる非同期処理をサポートしています。
非同期処理をサポートしているメソッドは、callback関数の引数を受け取ることができます。
また、非同期処理としてononXXXXXでイベントハンドラーを指定することもできます。
callback関数もしくはイベントハンドラーの指定をすることで非同期処理を行うことができます。

callback関数の引数を指定しない場合やイベントハンドラーの指定を指定しない場合、各々のメソッドは同期処理として動作します。

提供されるクラス

CHMPX Node.js アドオンライブラリは、ChmpxNodeクラスを提供します。
このChmpxNodeクラスをサーバーノードのクライアントとして初期化し、サーバーノード側クライアントとして通信を行います。
また、スレーブノードのクライアントとして初期化し、スレーブノード側クライアントとして通信できます。


ChmpxNodeクラス

CHMPX Node.js アドオンライブラリの提供するメインクラスです。
このクラスを使い、サーバーノード側クライアントおよびスレーブノード側クライアントとして通信ができます。

クラスを生成するには以下のように指定します。

以下に、ChmpxNodeクラスのメソッドとその説明をします。

ChmpxNode::InitializeOnServer()

CHMPXサーバーノード側に接続するためにChmpxNodeオブジェクトを初期化します。

書式

bool InitializeOnServer(String   filepath,
                        bool     is_auto_rejoin = false,
                        Callback cbfunc = null
)

引数

返り値

正常終了(true)もしくは失敗(false)を返します。
Callback関数が指定されている場合には、常にtrueが返されます。

サンプル

イベントハンドラ

Callback関数を指定せず、イベントハンドラを設定して非同期処理をすることができます。
以下の2つの方法で非同期処理を記述できます。

注意

メソッド引数is_auto_rejoinをfalseで呼び出した場合、CHMPXサーバーノードプロセスが起動していないときにはすぐにエラーとして本メソッド呼び出しは完了します。
is_auto_rejoinをtrueで呼び出した場合、CHMPXサーバーノードプロセスが起動していないときには、起動するまで本メソッドはブロックされます。
CHMPXプロセスがダウンした場合に再起動まで待った後、処理を行うようにするには、この引数をtrueとすることで、クライアントプログラムを簡単に実装できます。

ChmpxNode::InitializeOnSlave()

CHMPXスレーブノード側に接続するためにChmpxNodeオブジェクトを初期化します。

書式

bool InitializeOnSlave(String   filepath,
                       bool     is_auto_rejoin = false,
                       Callback cbfunc = null
)

引数

返り値

正常終了(true)もしくは失敗(false)を返します。
Callback関数が指定されている場合には、常にtrueが返されます。

サンプル

イベントハンドラ

Callback関数を指定せず、イベントハンドラを設定して非同期処理をすることができます。
以下の2つの方法で非同期処理を記述できます。

注意

メソッド引数is_auto_rejoinをfalseで呼び出した場合、CHMPXスレーブノードプロセスが起動していないときにはすぐにエラーとして本メソッド呼び出しは完了します。
is_auto_rejoinをtrueで呼び出した場合、CHMPXスレーブノードプロセスが起動していないときには、起動するまで本メソッドはブロックされます。
CHMPXプロセスがダウンした場合に再起動まで待った後、処理を行うようにするには、この引数をtrueとすることで、クライアントプログラムを簡単に実装できます。

ChmpxNode::Open()

ChmpxNodeオブジェクトをCHMPXスレーブノード側に接続し、メッセージIDを取得します。
ChmpxNodeオブジェクトは予めスレーブノード用に初期化されている必要があります。

書式

Buffer Open(bool     no_giveup_rejoin = false,
            Callback cbfunc = null
)

引数

返り値

正常終了時には、メッセージIDを返します。エラー時には(null)を返します。
Callback関数が指定されている場合には、常にtrueが返されます。

サンプル

イベントハンドラ

Callback関数を指定せず、イベントハンドラを設定して非同期処理をすることができます。
以下の2つの方法で非同期処理を記述できます。

注意

ChmpxNodeオブジェクトは予めスレーブノード用に初期化されている必要があります。
no_giveup_rejoin引数にtrueを指定した場合、CHMPXスレーブノードプロセスが起動するまでブロックします。
この引数にfalseを指定した場合、CHMPXスレーブノードプロセスが起動していないときには、試行上限回数まで接続が試行されます。
試行上限回数は、CHMPXスレーブノードプロセスの起動時に設定されています。

ChmpxNode::Close()

CHMPXスレーブノードに接続したメッセージIDを破棄(クローズ)します。

書式

bool Close(Buffer   msgid,
           Callback cbfunc = null
)

引数

返り値

正常終了(true)もしくは失敗(false)を返します。
Callback関数が指定されている場合には、常にtrueが返されます。

サンプル

イベントハンドラ

Callback関数を指定せず、イベントハンドラを設定して非同期処理をすることができます。
以下の2つの方法で非同期処理を記述できます。

ChmpxNode::Send()

CHMPXスレーブノード側に接続したChmpxNodeオブジェクトからCHMPXサーバーノード側にデータを送ります。

書式

int Send(Buffer   msgid,
         Buffer   body,
         bool     is_routing = true,
         Callback cbfunc = null
)

引数

返り値

正常終了時には、受信したCHMPXサーバーノード数を返します。エラー時には(-1)を返します。
Callback関数が指定されている場合には、常にtrueが返されます。

サンプル

イベントハンドラ

Callback関数を指定せず、イベントハンドラを設定して非同期処理をすることができます。
以下の2つの方法で非同期処理を記述できます。

注意

CHMPXサーバーノードプロセスは、設定により多重化をすることができます。
多重化されたCHMPXサーバーノードに対してスレーブノードからデータを送る場合、目的のCHMPXサーバーノードに接続できないとき、補助的なCHMPXサーバーノードにデータをルーティング配送することができます。
このメソッド引数is_routingをtrueに設定した場合、CHMPXサーバーノードプロセスが多重化されていれば、ルーティング配送します。
この引数をfalseにすると、送信データはルーティング配送されません。

ChmpxNode::Broadcast()

CHMPXスレーブノード側に接続したChmpxNodeオブジェクトからすべてのCHMPXサーバーノード側にデータを送ります。

書式

int Broadcast(Buffer   msgid,
              Buffer   body,
              Callback cbfunc = null
)

引数

返り値

正常終了時には、受信したCHMPXサーバーノード数を返します。エラー時には(-1)を返します。
Callback関数が指定されている場合には、常にtrueが返されます。

サンプル

イベントハンドラ

Callback関数を指定せず、イベントハンドラを設定して非同期処理をすることができます。
以下の2つの方法で非同期処理を記述できます。

ChmpxNode::Receive() - スレーブノード用

CHMPXスレーブノード側に接続したChmpxNodeオブジェクトで、CHMPXサーバーノード側からのデータを受信します。

書式

同期と非同期によって関数の引数が異なります。

引数

返り値

正常終了(true)もしくは失敗(false)を返します。
Callback関数が指定されている場合には、常にtrueが返されます。

サンプル

イベントハンドラ

Callback関数を指定せず、イベントハンドラを設定して非同期処理をすることができます。
以下の2つの方法で非同期処理を記述できます。

注意

同期の場合のoutarr引数には、非同期の時のCallback関数のBinary compktBuffer dataが配列に設定されます。

ChmpxNode::Receive() - サーバーノード用

CHMPXサーバーノード側に接続したChmpxNodeオブジェクトで、CHMPXスレーブノード側からのデータを受信します。

書式

同期と非同期によって関数の引数が異なります。

引数

返り値

正常終了(true)もしくは失敗(false)を返します。
Callback関数が指定されている場合には、常にtrueが返されます。

サンプル

イベントハンドラ

Callback関数を指定せず、イベントハンドラを設定して非同期処理をすることができます。
以下の2つの方法で非同期処理を記述できます。

注意

同期の場合のoutarr引数には、非同期の時のCallback関数のBinary compktBuffer dataが配列に設定されます。

ChmpxNode::Reply()

CHMPXサーバーノード側に接続したChmpxNodeオブジェクトからCHMPXスレーブノード側にデータを返信します。

書式

bool Reply(Buffer   compkt
          Buffer   body,
          Callback cbfunc = null
)

引数

返り値

正常終了(true)もしくは失敗(false)を返します。
Callback関数が指定されている場合には、常にtrueが返されます。

サンプル

イベントハンドラ

Callback関数を指定せず、イベントハンドラを設定して非同期処理をすることができます。
以下の2つの方法で非同期処理を記述できます。

注意

このメソッドはCHMPXサーバーノード側のクライアントプログラムが、CHMPXスレーブノードから受け取ったデータに対して、レスポンスを送り返すために利用されることを目的とします。
送信元のCHMPXスレーブノードにデータを返信するため、データ受信時に受け取ったBinary compktを使います。

ChmpxNode::IsChmpxExit()

CHMPXプロセスが起動しているか確認します。

書式

bool IsChmpxExit(void)

引数

なし

返り値

CHMPXプロセスが起動している場合にはfalseを返し、起動していない場合はtrueを返します。

サンプル

Build TOP Environments