Oracle Coherence for C++ API
Release 3.6.0.0
E15728-01

- Main Page
- Namespaces
- Classes
- Files

# coherence/util/filter/InKeySetFilter.hpp

    00001 /*
    00002 * InKeySetFilter.hpp
    00003 *
    00004 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    00005 *
    00006 * Oracle is a registered trademarks of Oracle Corporation and/or its
    00007 * affiliates.
    00008 *
    00009 * This software is the confidential and proprietary information of Oracle
    00010 * Corporation. You shall not disclose such confidential and proprietary
    00011 * information and shall use it only in accordance with the terms of the
    00012 * license agreement you entered into with Oracle.
    00013 *
    00014 * This notice may not be removed or altered.
    00015 */
    00016 #ifndef COH_IN_KEY_SET_FILTER_HPP
    00017 #define COH_IN_KEY_SET_FILTER_HPP
    00018
    00019 #include "coherence/lang.ns"
    00020
    00021 #include "coherence/io/pof/PofReader.hpp"
    00022 #include "coherence/io/pof/PofWriter.hpp"
    00023 #include "coherence/io/pof/PortableObject.hpp"
    00024 #include "coherence/util/Converter.hpp"
    00025 #include "coherence/util/Filter.hpp"
    00026 #include "coherence/util/Map.hpp"
    00027 #include "coherence/util/Set.hpp"
    00028 #include "coherence/util/filter/EntryFilter.hpp"
    00029 #include "coherence/util/filter/IndexAwareFilter.hpp"
    00030
    00031 COH_OPEN_NAMESPACE3(coherence,util,filter)
    00032
    00033 using coherence::io::pof::PofReader;
    00034 using coherence::io::pof::PofWriter;
    00035 using coherence::io::pof::PortableObject;
    00036 using coherence::util::Converter;
    00037
    00038
    00039 /**
    00040 * Filter that limits the underlying filter evaluation only to the specified
    00041 * set of keys.
    00042 *
    00043 * @author djl  2008.04.14
    00044 */
    00045 class COH_EXPORT InKeySetFilter
    00046     : public class_spec<InKeySetFilter,
    00047         extends<Object>,
    00048         implements<IndexAwareFilter, PortableObject> >
    00049     {
    00050     friend class factory<InKeySetFilter>;
    00051
    00052     // ----- constructors ---------------------------------------------------
    00053
    00054     protected:
    00055         /**
    00056         * Default constructor (necessary for the PortableObject interface).
    00057         */
    00058         InKeySetFilter();
    00059
    00060         /**
    00061         * Construct an InSetFilter for testing "In" condition.
    00062         *
    00063         * @param vFilter   the underlying filter
    00064         * @param vSetKeys  the set of keys to limit the filter evaluation to
    00065         */
    00066         InKeySetFilter(Filter::View vFilter, Set::View vSetKeys);
    00067
    00068
    00069     // ----- EntryFilter interface ------------------------------------------
    00070
    00071     public:
    00072         /**
    00073         * {@inheritDoc}
    00074         */
    00075         virtual bool evaluateEntry(Map::Entry::View vEntry) const;
    00076
    00077
    00078    // ----- Filter interface -----------------------------------------------
    00079
    00080     public:
    00081         /**
    00082         * {@inheritDoc}
    00083         */
    00084         virtual bool evaluate(Object::View v) const;
    00085
    00086
    00087     // ----- IndexAwareFilter interface -------------------------------------
    00088
    00089     public:
    00090         /**
    00091         * {@inheritDoc}
    00092         */
    00093         virtual size32_t calculateEffectiveness(Map::View vMapIndexes,
    00094                 Set::View vSetKeys) const;
    00095
    00096         /**
    00097         * {@inheritDoc}
    00098         */
    00099         virtual Filter::View applyIndex(Map::View vMapIndexes,
    00100                 Set::Handle hSetKeys) const;
    00101
    00102
    00103     // ----- PortableObject interface ---------------------------------------
    00104
    00105      public:
    00106         /**
    00107         * {@inheritDoc}
    00108         */
    00109         virtual void readExternal(PofReader::Handle hIn);
    00110
    00111         /**
    00112         * {@inheritDoc}
    00113         */
    00114         virtual void writeExternal(PofWriter::Handle hOut) const;
    00115
    00116
    00117     // ----- Object interface -----------------------------------------------
    00118
    00119     public:
    00120         /**
    00121         * {@inheritDoc}
    00122         */
    00123         virtual void toStream(std::ostream& out) const;
    00124
    00125
    00126     // ----- data member accessors ------------------------------------------
    00127
    00128     public:
    00129         /**
    00130         * Obtain the Filter.
    00131         *
    00132         * @return the Filter
    00133         */
    00134         virtual Filter::View getFilter() const;
    00135
    00136
    00137     // ----- Helpers --------------------------------------------------------
    00138
    00139     public:
    00140         /**
    00141         * Ensure that the underlying keys are converted using the specified
    00142         * converter.
    00143         *
    00144         * This method is intended to be used exclusively by the partitioned
    00145         * cache service in a scenario when cache keys to evaluate by this
    00146         * filter exist in internal form.
    00147         *
    00148         * @param vConverter  the converter that should be used for
    00149         *                    key conversions
    00150         */
    00151         virtual void ensureConverted(Converter::View vConverter);
    00152
    00153
    00154     // ----- data members ---------------------------------------------------
    00155
    00156     private:
    00157         /**
    00158         * The underlying Filter.
    00159         */
    00160         MemberView<Filter> m_vFilter;
    00161
    00162         /**
    00163         * The underlying set of keys. This set is not exposed via any
    00164         * accessors quite intentionally to ensure that this class is free to
    00165         * manipulate the key set (by the "convert" method) without
    00166         * interfering with any client logic.
    00167         */
    00168         MemberView<Set> m_vSetKeys;
    00169
    00170         /**
    00171         * A flag that indicates that the key set has been converted to internal
    00172         * form.
    00173         */
    00174         bool m_fConverted;
    00175     };
    00176
    00177 COH_CLOSE_NAMESPACE3
    00178
    00179 #endif // COH_IN_KEY_SET_FILTER_HPP

Copyright © 2000, 2010, Oracle and/or its affiliates. All rights reserved.