6 Sample Applications for C++ Clients

The instructions and command line examples assume that you have extracted the Java Coherence 3.4 archive and the C++ Coherence 3.4 archive onto your file system:

See Chapter 1, "Requirements, Installation, and Deployment for Coherence for C++" for more information on installing Coherence for C++.

Note:

Coherence C++ does not have any local dependencies on the Java installation. While this section assumes that you have installed both the Java and C++ versions of Coherence on the machine that will be used to run the examples, installation of the Java version is optional. If the Java version is not installed, the Cache Server will need to be running on a remote machine and the Java console example will not be available.

Coherence for C++ provides the following sample applications in the coherence-cpp/examples directory of the installed product:

6.1 Prerequisites for Building and Running the Sample Applications

The requirements for running a sample include:

6.2 Starting a Coherence Proxy Service and Cache Server

A sample command to start the proxy service and cache server is listed below. You must be sure to point the proxy at the server cache configuration file, such as extend-server-config.xml provided in the config directory. For example, on Windows execute:

Example 6-1 Sample Command to Start the Proxy Service and the Cache Server

c:\coherence\lib> java -Dtangosol.coherence.cacheconfig=c:\coherence\coherence-cpp\examples\config\extend-server-config.xml -cp coherence.jar "com.tangosol.net.DefaultCacheServer"

Note:

For the contacts example you will also need to use the additional POF configuration and custom classes included in the examples/java/ContactCache directory.

6.3 Building the Sample Applications

The Coherence for C++ distribution includes platform specific build scripts. Each script takes a single command line parameter, which is the name of the sample to build. For example, to build the console example on Windows, open a new command prompt window and execute:

c:\coherence\coherence-cpp\examples> build console

The sample executable will be created within the particular examples subdirectory, that is:

c:\coherence\coherence-cpp\examples\console\console.exe

Note:

On UNIX platforms you may need to mark the build script as executable first chmod +x build from the examples directory.

6.4 Starting a Sample Application

Now that configuration has been specified and the proxy/cache server has been started, you can start the client. For example, to run the console example on Windows, run the following command from the examples directory:

c:\coherence\coherence-cpp\examples> run console

The Coherence logging for the application will be directed to console.log in the examples directory.

6.5 Running the console Example

The console example enables you to enter data into the cache through a C++ console, then read it out through a Java console. Once you start the console example (by running run console), you will be provided with the familiar Map(?): prompt from the console. The C++ console supports a subset of the commands available from Java, enter help to get the list. The caches you can interact with are defined within the extend-cache-config.xml configuration file, but basically all you need to worry about is that local-* caches will be local only, and dist-* caches will be remote and use PIF/POF, and near-* will pull remote data into an in-process coherent near cache.

  1. Enter cache dist-hello to connect to the cache. Enter the commands illustrated in the following example to enter data into the cache and display it.

    Map(?): cache dist-hello
    
    Map(dist-hello): put hello world
    NULL
    
    Map(dist-hello): get hello
    world
    
    Map(dist-hello): size
    1
    
    Map(dist-hello): put from C++
    NULL
    
    Map(dist-hello): list
    from = C++
    hello = world
    
    Map(dist-hello):
    
    
  2. Launch a Java console to interact with the C++ console. Note that in the startup command, the Java client application must point to the same cache configuration as the C++ client. For example, on Windows, open a new command prompt window and execute the following command. (Note, the command is broken into two lines for formatting purposes).

    c:\coherence\lib> java -Dtangosol.coherence.cacheconfig=
      c:\coherence\coherence-cpp\examples\config\extend-cache-config.xml -jar coherence.jar
    
    
  3. Use the same console syntax that you used in the C++ console to access the cache. For example, on Windows, open a new command prompt window and execute the commands illustrated in the following figure:

    Map(?): cache dist-hello
    2008-04-25 09:01:02.207 Oracle Coherence GE 3.4/396 Alpha <D5> (thread=DistributedCache, member=3): Service
    DistributedCache joined the cluster with senior service member 1
    2008-04-25 09:01:02.239 Oracle Coherence GE 3.4/396 Alpha <D5> (thread=DistributedCache, member=3): Service
    DistributedCache: received ServiceConfigSync containing 259 entries
    <distributed-scheme>
      <scheme-name>example-distributed</scheme-name>
      <service-name>DistributedCache</service-name>
      <lease-granularity>member</lease-granularity>
      <backing-map-scheme>
        <local-scheme//>
      </backing-map-scheme>
      <autostart>true
    
  4. Now that you've run the example, you are encouraged to have a look at the code. See "Sample Code for the console Example". Each sample has a corresponding directory under examples which contains its sample specific source. There is also a common directory which contains source used in all samples.

6.6 Running the hellogrid Example

The hellogrid example exercises the cache by entering various types of data into the cache and reading them out, printing cache contents, querying the cache, and so on. Follow these steps to build and run the hellogrid example:

  1. Stop any instance of the proxy and cache server that may be currently running.

  2. Start a new instance of the proxy and cache server.

  3. Build the hellogrid example. For example, on Windows, open a new command prompt window and invoke the build file.

    C:\coherence\coherence-cpp\examples>build hellogrid
    building hellogrid\hellogrid.exe ...
    hellogrid.cpp
    ContactInfo.cpp
    PortableContactInfo.cpp
    StreamParser.cpp
    Generating Code...
    C:\coherence\coherence-cpp\examples>
    
  4. Run the hellogrid example. The window will display output similar to the following:

    C:\coherence\coherence-cpp\examples>run hellogrid
    retrieved cache "dist-hello" containing 0 entries
            put: hello = grid
            get: hello = grid
            get: dummy = NULL
    entire cache contents:
            34567 = 8.9
            23456 = 7.8
            12345 = 6.7
            hello = grid
    updated cache contents:
            34567 = 8.9
            23456 = 7.8
            12345 = 6.7
            45678 = 9.1
    filtered cache contents by coherence::util::filter::GreaterFilter: (IdentityExtr
    actor, 7)
            34567 = 8.9
            23456 = 7.8
            45678 = 9.1
    minimum: 6.7
    increment results by 6.7
            34567 = 15.6
            23456 = 14.5
            12345 = 13.4
            45678 = 15.8
    
    C:\coherence\coherence-cpp\examples>
    
  5. Now that you've run the example, you are encouraged to have a look at the code. See "Sample Code for the hellogrid Example". Each sample has a corresponding directory under examples which contains its sample specific source. There is also a common directory which contains source used in all samples.

6.7 Running the contacts Example

The contact example enables you to enter names and addresses into the cache, then query to display the entries. The following commands can be run from the example:

  • help—returns a list of commands that the example can run

  • bye—stops the example and returns you to the command prompt

  • create—responds with prompts for a person's contact information: name, street address, city, state, zip code

  • find—prompts you for a name. The example will return the contact information associated with the name.

Follow these steps to build and run the contacts example:

  1. Stop any instance of the proxy and cache server that may be currently running.

  2. Start a new instance of the proxy and cache server.

  3. Build the contacts example. For example, on Windows, open a new command prompt window and invoke the build file.

    C:\coherence\coherence-cpp\examples>build contacts
    building contacts\contacts.exe ...
    contacts.cpp
    ContactInfo.cpp
    PortableContactInfo.cpp
    StreamParser.cpp
    Generating Code...
    C:\coherence\coherence-cpp\examples>
    
  4. Run the contacts example. The window will display output similar to the following:

    C:\coherence\coherence-cpp\examples>run contacts
    contacts> help
    commands are:
    bye
    create
    find <street | city | state | zip | all>
    contacts>
    
  5. Exercise the example by entering the commands help, create, find, and bye.

    contacts> help
    commands are:
    bye
    create
    find <street | city | state | zip | all>
    
    contacts> create
    Name: Tom
    Street: Oracle Parkway
    City: Redwood Shores
    State: California
    Zip: 94065
    storing: ContactInfo(Name=Tom, Street=Oracle Parkway, City=Redwood Shores, State
    =California, Zip=94065)
    
    contacts> find
    Name: Tom
    ContactInfo(Name=Tom, Street=Oracle Parkway, City=Redwood Shores, State=California, Zip=94065)
    
    contacts> bye
    
    C:\coherence\coherence-cpp\examples>
    
  6. Now that you've run the example, you are encouraged to have a look at the code. See "Sample Code for the contacts Example". Each sample has a corresponding directory under examples which contains its sample specific source. There is also a common directory which contains source used in all samples.