C++ Upgrade Example

UpgradeSample.cpp shows usage of the V10 API, with examples of the V9 API provided for comparison.

#include <iostream>
#include <thread>

#include <geode/CacheFactory.hpp>
#include <geode/PoolManager.hpp>
#include <geode/RegionFactory.hpp>
#include <geode/RegionShortcut.hpp>

using namespace apache::geode::client;

int main(int argc, char** argv) {
    try {

        // *** Create the cache *********************************************************

        // OLD:
        //   CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
        //   CachePtr cachePtr = cacheFactory->create();

        // NEW:
        auto cacheFactory = CacheFactory();
        auto cache = cacheFactory.create();

        // *** Create the region ********************************************************

        // OLD:
        //  RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
        //  RegionPtr regionPtr = regionFactory->create("exampleRegion");

        // NEW: (pool required)
        auto poolFactory = cache.getPoolManager().createFactory();
        auto pool = poolFactory.addLocator("localhost", 10334).create("pool");
        auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY);
        auto region = regionFactory.setPoolName("pool").create("exampleRegion");

        // *** Put constant data into the region ****************************************

        // OLD:
        //regionPtr->put("blue", "The color of the sky");

        // NEW:
        region->put("blue", "The color of the sky");

        // *** Put variable data into the region ****************************************

        // OLD:
        // CacheableKeyPtr keyPtr = CacheableString::create("green");
        // CacheablePtr valuePtr = CacheableString::create("The color of life");
        // regionPtr->put(keyPtr, valuePtr);

        // NEW:
        auto key = CacheableString::create("green");
        auto value = CacheableString::create("The color of life");
        region->put(key, value);

        // *** Get data from the region *************************************************

        // OLD:
        //CacheablePtr result1Ptr = regionPtr->get("Key1");
        //CacheablePtr result2Ptr = regionPtr->get(keyPtr);

        // NEW:
        auto result1 = region->get("Key1");
        auto result2 = region->get(key);

        // *** Invalidate an Entry in the Region ****************************************

        // OLD:
        //regionPtr->invalidate("Key1");
        //regionPtr->invalidate(keyPtr);

        // NEW:
        region->invalidate("Key1");
        region->invalidate(key);

        // *** Destroy an Entry in the Region *******************************************

        // OLD:
        //regionPtr->destroy("Key1");
        //regionPtr->destroy(keyPtr);

        // NEW:
        region->destroy("Key1");
        region->destroy(key);

        // *** Close the cache **********************************************************

        // OLD:
        //cachePtr->close();

        // NEW:
        cache.close();
    }
    catch (Exception ex) {}
}