Apache Geode Native .NET Reference 1.15.0
Apache::Geode::Client::IFixedPartitionResolver< TKey, TValue > Interface Template Reference

Implementers of interface

FixedPartitionResolver

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

#include <IFixedPartitionResolver.hpp>

Inherits Apache::Geode::Client::IPartitionResolver< TKey, TValue >.

Public Member Functions

String ^ GetName ()
 Returns the name of the PartitionResolver. More...
 
String ^ GetPartitionName (EntryEvent< TKey, TValue >^ opDetails)
 This method is used to get the name of the partition for the given entry operation. More...
 
Object ^ GetRoutingObject (EntryEvent< TKey, TValue >^ key)
 return object associated with entry event which allows the Partitioned Region to store associated data together. More...
 

Detailed Description

template<class TKey, class TValue>
interface Apache::Geode::Client::IFixedPartitionResolver< TKey, TValue >

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, 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 String getPartitionName(EntryOperation opDetails, 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
See also
RegionAttributesFactory.SetPartitionResolver, RegionAttributes.PartitionResolver

Member Function Documentation

◆ GetName()

template<class TKey , class TValue >
String ^ Apache::Geode::Client::IPartitionResolver< TKey, TValue >::GetName ( )
inherited

Returns the name of the PartitionResolver.

This function does not throw any exception.

Returns
the name of the PartitionResolver

◆ GetPartitionName()

template<class TKey , class TValue >
String ^ Apache::Geode::Client::IFixedPartitionResolver< TKey, TValue >::GetPartitionName ( EntryEvent< TKey, TValue >^  opDetails)

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)

<return> partition-name associated with node which allows mapping of given data to user defined partition </return>

◆ GetRoutingObject()

template<class TKey , class TValue >
Object ^ Apache::Geode::Client::IPartitionResolver< TKey, TValue >::GetRoutingObject ( EntryEvent< TKey, TValue >^  key)
inherited

return object associated with entry event which allows the Partitioned Region to store associated data together.

throws RuntimeException - any exception thrown will terminate the operation and the exception will be passed to the calling thread.

Parameters
keykey the detail of the entry event.

Apache Geode C++ Cache .NET API Documentation