FixedPartitionResolver helps to achieve explicit mapping of a "user defined" partition to a data member node.
GemFire uses the partition name returned by FixedPartitionResolver#getPartitionName(EntryEvent, CacheableHashSetPtr) 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{
    public const char* getPartitionName(EntryEvent event, CacheableHashSetPtr allAvailablePartitions) {
    Date date = sdf.parse((String)opDetails.getKey());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int month = cal.get(Calendar.MONTH);
    if (month == 0 || month == 1 || month == 2) {
      return "Quarter1";
    }
    else if (month == 3 || month == 4 || month == 5) {
      return "Quarter2";
    }
    else if (month == 6 || month == 7 || month == 8) {
      return "Quarter3";
    }
    else if (month == 9 || month == 10 || month == 11) {
      return "Quarter4";
    }
    else {
      return "Invalid Quarter";
    }
  }
Public Member Functions | ||||
| virtual const char * | getName () | |||
| Returns the name of the PartitionResolver. | ||||
| virtual const char * | getPartitionName (const EntryEvent &opDetails, CacheableHashSetPtr targetPartitions)=0 | |||
| virtual CacheableKeyPtr | getRoutingObject (const EntryEvent &opDetails)=0 | |||
| ||||
| void | preserveSB () const | |||
| Atomically increment reference count. | ||||
| int32_t | refCount () | |||
| ||||
| void | releaseSB () const | |||
| Atomically decrement reference count, the SharedBase object is automatically deleted when its reference count goes to zero. | ||||
| virtual const char* gemfire::PartitionResolver::getName | ( | ) | [virtual, inherited] |
| virtual const char* gemfire::FixedPartitionResolver::getPartitionName | ( | const EntryEvent & | opDetails, | |
| CacheableHashSetPtr | targetPartitions | |||
| ) | [pure virtual] |
public methods This method is used to get the name of the partition for the given entry operation.
| opDetails | the details of the entry event e.g. Region#get(Object) | |
| targetPartitions |
| virtual CacheableKeyPtr gemfire::PartitionResolver::getRoutingObject | ( | const EntryEvent & | opDetails | ) | [pure virtual, inherited] |
| opDetails | the detail of the entry event |
| RuntimeException | - any exception thrown will terminate the operation and the exception will be passed to the calling thread. |
| void gemfire::SharedBase::preserveSB | ( | ) | const [inherited] |
Atomically increment reference count.
| int32_t gemfire::SharedBase::refCount | ( | ) | [inline, inherited] |
| void gemfire::SharedBase::releaseSB | ( | ) | const [inherited] |
Atomically decrement reference count, the SharedBase object is automatically deleted when its reference count goes to zero.