Apache Geode Native C++ Reference 1.15.0
apache::geode::client::FixedPartitionResolver Class Referenceabstract

Implementers of interface FixedPartitionResolver helps to achieve explicit mapping of a "user defined" partition to a data member node. More...

#include <FixedPartitionResolver.hpp>

Inherits apache::geode::client::PartitionResolver.

Public Member Functions

virtual const std::string & getName ()
 Returns the name of the PartitionResolver. More...
 
virtual const std::string & getPartitionName (const EntryEvent &opDetails)=0
 public methods More...
 
virtual std::shared_ptr< CacheableKeygetRoutingObject (const EntryEvent &opDetails)=0
 

Detailed Description

Implementers of interface FixedPartitionResolver helps to achieve explicit mapping of a "user defined" partition to a data member node.

Geode uses the partition name returned by FixedPartitionResolver#getPartitionName(EntryEvent, std::shared_ptr<CacheableHashSet>) to determine on which member the data is being managed. Say, for example, you want to partition all Trades according to quarters. You can implement FixedPartitionResolver to get the name of the quarter based on the date given as part of EntryEvent.

public class QuarterPartitionResolver implements FixedPartitionResolver{
&nbsp &nbsp public const char* getPartitionName(EntryEvent event, std::shared_ptr<CacheableHashSet> allAvailablePartitions) {
&nbsp &nbsp Date date = sdf.parse((String)opDetails.getKey());
&nbsp &nbsp Calendar cal = Calendar.getInstance();
&nbsp &nbsp cal.setTime(date);
&nbsp &nbsp int month = cal.get(Calendar.MONTH);
&nbsp &nbsp if (month == 0 || month == 1 || month == 2) {
&nbsp &nbsp &nbsp return "Quarter1";
&nbsp &nbsp }
&nbsp &nbsp else if (month == 3 || month == 4 || month == 5) {
&nbsp &nbsp &nbsp return "Quarter2";
&nbsp &nbsp }
&nbsp &nbsp else if (month == 6 || month == 7 || month == 8) {
&nbsp &nbsp &nbsp return "Quarter3";
&nbsp &nbsp }
&nbsp &nbsp else if (month == 9 || month == 10 || month == 11) {
&nbsp &nbsp &nbsp return "Quarter4";
&nbsp &nbsp }
&nbsp &nbsp else {
&nbsp &nbsp &nbsp return "Invalid Quarter";
&nbsp &nbsp }
&nbsp }

See also
PartitionResolver

Member Function Documentation

◆ getName()

virtual const std::string & apache::geode::client::PartitionResolver::getName ( )
virtualinherited

Returns the name of the PartitionResolver.

Returns
String name

Reimplemented in apache::geode::client::StringPrefixPartitionResolver.

◆ getPartitionName()

virtual const std::string & apache::geode::client::FixedPartitionResolver::getPartitionName ( const EntryEvent opDetails)
pure virtual

public methods

This method is used to get the name of the partition for the given entry operation.

Parameters
opDetailsthe details of the entry event e.g. Region#get(Object)
Returns
partition-name associated with node which allows mapping of given data to user defined partition

◆ getRoutingObject()

virtual std::shared_ptr< CacheableKey > apache::geode::client::PartitionResolver::getRoutingObject ( const EntryEvent opDetails)
pure virtualinherited
Parameters
opDetailsthe detail of the entry event
Exceptions
RuntimeException- any exception thrown will terminate the operation and the exception will be passed to the calling thread.
Returns
object associated with entry event which allows the Partitioned Region to store associated data together

Implemented in apache::geode::client::StringPrefixPartitionResolver.


Apache Geode C++ Cache API Documentation