All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gemstone.gemfire.cache.InterestPolicy Maven / Gradle / Ivy

There is a newer version: 2.0-BETA
Show newest version
/*
 * Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you
 * may not use this file except in compliance with the License. You
 * may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License. See accompanying
 * LICENSE file.
 */


package com.gemstone.gemfire.cache;
import java.io.*;

/**
 * Enumerated type for region subscription interest policy.
 * The interest policy specifies what data a subscriber is interested in having
 * in it's region.
 *
 * @author Darrel Schneider
 *
 *
 * @see SubscriptionAttributes
 *
 * @since 5.0
 */
public class InterestPolicy implements java.io.Serializable {
  private static final long serialVersionUID = 1567179436331385968L;

  private static byte nextOrdinal = 0;
    
  private static final InterestPolicy[] VALUES = new InterestPolicy[2];

  /**
   * This subscriber is interested in all data.
   * More specifically operations done in this cache and
   * distributed operations done in remote caches.
   * 

* When combined with {@link DataPolicy#EMPTY} this region will receive * events for every distributed operation but will not store the data. *

* When combined with {@link DataPolicy#NORMAL} or * {@link DataPolicy#PRELOADED} this region will accept * {@link Region#create(Object, Object)} operations done remotely. Without * the ALL interest policy, NORMAL and * PRELOADED ignore creates that the region * does not have an existing entry for. *

* When combined with the {@link DataPolicy#withReplication replication * policies} this interest has no effect. *

* When combined with {@link DataPolicy#PARTITION} this interest policy * causes cache listeners to be notified of changes regardless of the * physical location of the data affected. That is, a listener in a VM * using this policy will receive notification of all changes to the * partitioned region. */ public static final InterestPolicy ALL = new InterestPolicy("ALL"); /** * This subscriber is interested in data that is already in its cache. * More specifically operations done in this cache and * distributed operations done in remote caches. *

* When combined with {@link DataPolicy#EMPTY} this region will never * receive events for distributed operations since its content is always * empty. It will continue to get events for operations done locally. *

* When combined with {@link DataPolicy#NORMAL} or * {@link DataPolicy#PRELOADED} this region will accept remote operations * done to entries it already has in its cache. *

* When combined with the {@link DataPolicy#withReplication replication * policies} * this interest has no effect. *

* When combined with {@link DataPolicy#PARTITION} this interest policy * causes cache listeners to be notified in the VM holding the affected data. * That is, listeners are only notified if the affected* key-value pair is * in the same process as the listener. */ public static final InterestPolicy CACHE_CONTENT = new InterestPolicy("CACHE_CONTENT"); /** * The interest policy used by default; it is {@link #CACHE_CONTENT}. */ public static final InterestPolicy DEFAULT = CACHE_CONTENT; /** The name of this mirror type. */ private final transient String name; /** used as ordinal to represent this InterestPolicy */ public final byte ordinal; private Object readResolve() throws ObjectStreamException { return VALUES[ordinal]; // Canonicalize } /** Creates a new instance of InterestPolicy. */ private InterestPolicy(String name) { this.name = name; this.ordinal = nextOrdinal++; VALUES[this.ordinal] = this; } /** Return the InterestPolicy represented by specified ordinal */ public static InterestPolicy fromOrdinal(byte ordinal) { return VALUES[ordinal]; } /** * Return true if this policy is {@link #ALL}. * @return true if this policy is {@link #ALL}. */ public boolean isAll() { return this == ALL; } /** * Return true if this policy is {@link #CACHE_CONTENT}. * @return true if this policy is {@link #CACHE_CONTENT}. */ public boolean isCacheContent() { return this == CACHE_CONTENT; } /** * Return true if this policy is the default. * @return true if this policy is the default. */ public boolean isDefault() { return this == DEFAULT; } /** Returns a string representation for this interest policy. * @return the name of this interest policy. */ @Override public String toString() { return this.name; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy