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

- Main Page
- Namespaces
- Classes
- Files

# coherence/util/aggregator/CompositeAggregator.hpp

    00001 /*
    00002 * CompositeAggregator.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_COMPOSITE_AGGREGATOR_HPP
    00017 #define COH_COMPOSITE_AGGREGATOR_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/InvocableMap.hpp"
    00025
    00026 COH_OPEN_NAMESPACE3(coherence,util,aggregator)
    00027
    00028 using coherence::io::pof::PofReader;
    00029 using coherence::io::pof::PofWriter;
    00030 using coherence::io::pof::PortableObject;
    00031
    00032
    00033 /**
    00034 * CompositeAggregator provides an ability to execute a collection of
    00035 * aggregators against the same subset of the entries in an InvocableMap,
    00036 * resulting in a list of corresponding aggregation results. The size of the
    00037 * returned list will always be equal to the length of the aggregators' array.
    00038 *
    00039 * @author djl  2008.05.16
    00040 */
    00041 class COH_EXPORT CompositeAggregator
    00042     : public class_spec<CompositeAggregator,
    00043         extends<Object>,
    00044         implements<PortableObject, InvocableMap::EntryAggregator> >
    00045     {
    00046     friend class factory<CompositeAggregator>;
    00047
    00048     // ----- factory methods ------------------------------------------------
    00049
    00050     public:
    00051          /**
    00052          * Default constructor (necessary for the PortableObject interface).
    00053          */
    00054          static CompositeAggregator::Handle create();
    00055
    00056          /**
    00057          * Create an instance of CompositeAggregator based on a specified
    00058          * array of coherence::util::InvocableMap::EntryAggregator.
    00059          * If all the aggregators in the specified array are instances of
    00060          * coherence::util::InvocableMap::ParallelAwareAggregator
    00061          * then a parallel-aware instance of the CompositeAggregator will be
    00062          * created.
    00063          * <br>
    00064          * If at least one of the specified aggregator is not parallel-aware,
    00065          * then the resulting CompositeAggregator will not be parallel-aware
    00066          * and could be ill-suited for aggregations run against large
    00067          * partitioned caches.
    00068          *
    00069          * @param vaAggregator  an array of EntryAggregator objects; must
    00070          *                      contain not less than two aggregators
    00071          */
    00072          static CompositeAggregator::Handle create(
    00073                  ObjectArray::View vaAggregator);
    00074
    00075
    00076     // ----- constructors ---------------------------------------------------
    00077
    00078     protected:
    00079         /**
    00080         * @internal
    00081         */
    00082         CompositeAggregator();
    00083
    00084         /**
    00085         * @internal
    00086         */
    00087         CompositeAggregator(ObjectArray::View vaAggregator);
    00088
    00089
    00090     // ----- InvocableMap::EntryAggregator interface ------------------------
    00091
    00092     public:
    00093         /**
    00094         * {@inheritDoc}
    00095         */
    00096         virtual Object::Holder aggregate(Set::View vSetEntries);
    00097
    00098
    00099     // ----- PortableObject interface ---------------------------------------
    00100
    00101     public:
    00102         /**
    00103         * {@inheritDoc}
    00104         */
    00105         virtual void readExternal(PofReader::Handle hIn);
    00106
    00107         /**
    00108         * {@inheritDoc}
    00109         */
    00110         virtual void writeExternal(PofWriter::Handle hOut) const;
    00111
    00112
    00113     // ----- Object interface -----------------------------------------------
    00114
    00115     public:
    00116         /**
    00117         * {@inheritDoc}
    00118         */
    00119         virtual bool equals(Object::View v) const;
    00120
    00121         /**
    00122         * {@inheritDoc}
    00123         */
    00124         virtual size32_t hashCode() const;
    00125
    00126         /**
    00127         * {@inheritDoc}
    00128         */
    00129         virtual void toStream(std::ostream& out) const;
    00130
    00131
    00132     // ----- data member accessors ------------------------------------------
    00133
    00134     public:
    00135         /**
    00136         * Determine the ValueExtractor whose values this aggregator is
    00137         * aggregating.
    00138         *
    00139         * @return the ValueExtractor used by this aggregator
    00140         */
    00141         virtual ObjectArray::View getAggregators() const;
    00142
    00143
    00144     // ----- data members ---------------------------------------------------
    00145
    00146     protected:
    00147         /**
    00148         * The underlying EntryAggregator array.
    00149         */
    00150         MemberView<ObjectArray> m_vaAggregator;
    00151     };
    00152
    00153 COH_CLOSE_NAMESPACE3
    00154
    00155 #endif // COH_COMPOSITE_AGGREGATOR_HPP

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