An Java interface to the Global Data Plane.

"The Global Data Plane provides a data-centric glue for swarm applications. The basic primitive is that of a multi-input, multi-output, time-aware secure log. Data inputs are timestamped and rearranged by timestamp. Data can be securely commited to the log in a variety of ways, including via a external consistent transactional model. Data within the log can be randomly read, thereby permitting a variety of data models, including (eventually) a SQL query model. Further, data within a log can be preserved for the long term." (source:

As of October, 2014, the GDP was not yet released. See GDP Java Interface in the TerraSwarm wiki, which is only accessible by people associated with TerraSwarm.

This package consists of a Java interface to the GDP.

Most of the java files were created using JNAerator.

The file contains utilities that were written by hand. These utilities are useful for dealing with the return values of the GDP, which are unsigned longs and thus difficult to use with Java before JDK 1.8.

The apps/ directory contains GDP applications ported from the c-based gdp/apps/ directory.

Updating GDP Version Numbers

When the GDP Version number in ../../gdp/gdp_version.h changes, then make the following changes:

  2. Run make clean; make, which will may fail if GDPLIBMAJVER is updated.
  3. If the make command fails, then edit org/terraswarm/gdp/GDP*.java files and update GdpNMLibrary to the new version.
  4. Run make and edit files until the make successfully completes.
  5. Run make install.
  6. Update $PTII/lib:
    1. Update the jar file in $PTII/lib:
       bash-3.2$ svn delete --force $PTII/lib/gdp*.jar
      D         /Users/cxh/ptII/lib/gdp-0.7-0.jar
      bash-3.2$ cp gdp*.jar $PTII/lib
      bash-3.2$ svn add $PTII/lib/gdp-0.7-2.jar 
      A  (bin)  /Users/cxh/ptII/lib/gdp-0.7-2.jar
    2. If GDPLIBMAJVER@ changed, then update the GDP shared library for the current platform:
      bash-3.2$ svn delete --force $PTII/lib/libgdp.0.6.dylib
      D         /Users/cxh/ptII/lib/libgdp.0.6.dylib
      bash-3.2$ cp ../../libs/libgdp.0.7.dylib $PTII/lib
      bash-3.2$ svn add $PTII/lib/libgdp.0.7.dylib 
      A  (bin)  /Users/cxh/ptII/lib/libgdp.0.7.dylib
    3. Update the gdp-N.M-P string to the new version in $PTII/, $PTII/.classpath.default and $PTII/build.default.xml
    4. Run (cd $PTII;autoconf;./configure) and verify that $PTII/mk/ refers to the new jar file
    5. Commit the changes to the ptII svn repo:
                (cd $PTII; svn commit -m "Updated the gdp to 0.7-2." build.default.xml lib)
      The above commands are for Mac OS X, which uses .dylib. We delete the .so, which is used by Linux here anyway. The gdp shared library must be updated on the build machine so that the nightly build will successfully run the GDP tests under Linux.
    6. Update $PTII/configure:
                (cd $PTII; autoconf; svn commit -m " changed." configure)
    7. Test out the GDP Java interface with:
                $PTII/bin/vergil $PTII/ptolemy/actor/lib/jjs/modules/gdp/test/auto/GDPLogCreateAppendReadJS.xml 
    8. Log on to machines for other platforms (currently only Linux at and build and install the shared library.
  7. Add the changed gdp files:
          git add makefile org/terraswarm/gdp/GDP{,_DATUM,_GCL,_GCLMD,_NAME}.java
  8. Commit and push:
          git commit -m "Updated GDP Java interface to 0.6-1."
          git push

@since Ptolemy II 10.0