13.10. Hot Rod C++ クライアント

Hot Rod C ++ クライアントは、Hot Rod Java クライアントを含む Hot Rod クライアントファミリーに新しく追加され、C++ ランタイムアプリケーションが Red Hat JBoss Data Grid リモートサーバーに接続し、対話することを可能にします。
Hot Rod C++ クライアントにより、C++ で開発されたアプリケーションがデータを読み取ったり、データをリモートキャッシュに書き込んだりすることができるようになります。Hot Rod C ++ クライアントは、すべての 3 つのレベルのクライアントインテリジェンスをサポートし、以下のプラットフォームでサポートされます。
  • Red Hat Enterprise Linux 5、64 ビット
  • Red Hat Enterprise Linux 6、64 ビット
  • Red Hat Enterprise Linux 7、64 ビット
Hot Rod C++ クライアントは、Visual Studio 2010 がインストールされた 64 ビット Windows ではテクノロジープレビューとして利用できます。

13.10.1. Hot Rod C++ クライアント形式

Hot Rod C++ クライアントは、以下の 2 つのライブラリー形式で利用可能です。
  • 静的ライブラリー
  • 共有/動的ライブラリー
静的ライブラリー

静的ライブラリーはアプリケーションに静的にリンクされます。これにより、最終的な実行可能ファイルのサイズは増加します。アプリケーションは自己完結型であり、別のライブラリーを提供する必要はありません。

共有/動的ライブラリー

共有/動的ライブラリーは、実行時にアプリケーションに動的にリンクされます。ライブラリーは別のファイルに格納され、アプリケーションを再コンパイルせずアプリケーションとは別にアップグレードできます。

注記

これは、ライブラリーのメジャーバージョンがコンパイル時にアプリケーションがリンクされたものと同じである (バイナリー互換性がある) 場合にのみ可能です。

13.10.2. Hot Rod C++ クライアントの前提条件

Hot Rod C++ クライアントを使用するには、以下のものが必要です。
  • shared_ptr TR1 (GCC 4.0+、Visual Studio C++ 2010) をサポートする C++ 03 コンパイラー。
  • Red Hat JBoss Data Grid Server 6.1.0 以上のバージョン。

13.10.3. Hot Rod C++ クライアントのダウンロード

Hot Rod C++ クライアントは、Red Hat カスタマーポータル (https://access.redhat.com) の Red Hat JBoss Data Grid  バイナリー下にある個別の zip ファイル、jboss-datagrid-<version>-hotrod-cpp-client-<platform>.zip に含まれます。使用しているオペレーティングシステムに適切な Hot Rod C++ クライアントをダウンロードしてください。

13.10.4. Hot Rod C++ クライアントの設定

Hot Rod C++ クライアントは RemoteCache API を使用してリモートの Hot Rod サーバーと対話します。特定の Hot Rod サーバーとの通信を開始するために、RemoteCache を設定し、Hot Rod サーバーの特定のキャッシュを選択します。
ConfigurationBuilder API を使用すると、以下のものを設定できます。
  • 接続するサーバーの初期セット。
  • 接続プール属性。
  • 接続/ソケットタイムアウトおよび TCP nodelay。
  • Hot Rod プロトコルバージョン。
C++ 主要実行可能ファイルの設定例

以下の例は、ConfigurationBuilder を使用して RemoteCacheManager を設定する方法とデフォルトのリモートキャッシュを取得する方法を示しています。

例13.6 SimpleMain.cpp

#include "infinispan/hotrod/ConfigurationBuilder.h"
#include "infinispan/hotrod/RemoteCacheManager.h"
#include "infinispan/hotrod/RemoteCache.h"
#include <stdlib.h>
using namespace infinispan::hotrod;
int main(int argc, char** argv) {
    ConfigurationBuilder b;
    b.addServer().host("127.0.0.1").port(11222);
    RemoteCacheManager cm(builder.build());
    RemoteCache<std::string, std::string> cache = cm.getCache<std::string, std::string>();
    return 0;
}

13.10.5. Hot Rod C++ クライアント API

RemoteCacheManager は、RemoteCache への参照を取得する開始点です。RemoteCache API は、リモート Hot Rod サーバーとサーバー上の特定のキャッシュと対話できます。
前の例で取得した RemoteCache 参照を使用すると、リモートキャッシュで値を挿入、取得、置換、および削除できます。また、すべてのキーの取得やキャッシュのクリアなどの一括操作を実行することもできます。
RemoteCacheManager が停止されると、使用中のすべてのリソースが解放されます。

例13.7 SimpleMain.cpp

RemoteCache<std::string, std::string> rc = cm.getCache<std::string, std::string>();
    std::string k1("key13");
    std::string v1("boron");
    // put
    rc.put(k1, v1);
    std::auto_ptr<std::string> rv(rc.get(k1));
    rc.putIfAbsent(k1, v1);
    std::auto_ptr<std::string> rv2(rc.get(k1));
    std::map<HR_SHARED_PTR<std::string>,HR_SHARED_PTR<std::string> > map = rc.getBulk(0);
    std::cout << "getBulk size" << map.size() << std::endl;
    ..
    .
    cm.stop();