Using a Custom Class
This example shows how to use the defined BankAccount
custom key type and the AccountHistory
value type.
The example takes you through these basic operations: registering, creating a cache, connecting to the distributed system, putting data, getting data, and closing the cache.
Using a BankAccount Object
#include <geode/GeodeCppCache.hpp>
#include "BankAccount.hpp"
#include "AccountHistory.hpp"
using namespace apache::geode::client;
/*
This example connects, registers types, creates the cache, creates a
region, and then puts and gets user defined type BankAccount.
*/
int main( int argc, char** argv ) {
// Register the user-defined serializable type.
Serializable::registerType( AccountHistory::createDeserializable );
Serializable::registerType( BankAccount::createDeserializable );
CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
// Create a cache.
CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)
->addServer("localhost", 24680)
->create();
// Create a region.
RegionFactoryPtr regionFactory =
cachePtr->createRegionFactory(CACHING_PROXY);
RegionPtr regionPtr = regionFactory->create("BankAccounts");
// Place some instances of BankAccount cache region.
BankAccountPtr KeyPtr(new BankAccount(2309, 123091));
AccountHistoryPtr ValPtr(new AccountHistory());
ValPtr->addLog( "Created account" );
regionPtr->put( KeyPtr, ValPtr );
printf( "Put an AccountHistory in cache keyed with BankAccount.\n" );
// Call custom behavior on instance of BankAccount.
KeyPtr->showAccountIdentifier();
// Call custom behavior on instance of AccountHistory.
ValPtr->showAccountHistory();
// Get a value out of the region.
AccountHistoryPtr historyPtr =
dynCast<AccountHistoryPtr>( regionPtr->get( KeyPtr ) );
if ( historyPtr != NULLPTR ) {
printf( "Found AccountHistory in the cache.\n" );
historyPtr->showAccountHistory();
historyPtr->addLog( "debit $1,000,000." );
regionPtr->put( KeyPtr, historyPtr );
printf( "Updated AccountHistory in the cache.\n" );
}
// Look up the history again.
historyPtr = dynCast<AccountHistoryPtr>( regionPtr->get( KeyPtr ) );
if ( historyPtr != NULLPTR ) {
printf( "Found AccountHistory in the cache.\n" );
historyPtr->showAccountHistory();
}
// Close the cache and disconnect from the servers
cachePtr->close();
return 0;
}