Oracle Coherence for C++ API
Release 3.6.1.0
E18813-01

- Main Page
- Namespaces
- Classes
- Files

# coherence/util/processor/ConditionalProcessor.hpp

    00001 /*
    00002 * ConditionalProcessor.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_CONDITIONAL_PROCESSOR_HPP
    00017 #define COH_CONDITIONAL_PROCESSOR_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/Filter.hpp"
    00025 #include "coherence/util/InvocableMap.hpp"
    00026 #include "coherence/util/processor/AbstractProcessor.hpp"
    00027
    00028 COH_OPEN_NAMESPACE3(coherence,util, processor)
    00029
    00030 using coherence::io::pof::PofReader;
    00031 using coherence::io::pof::PofWriter;
    00032 using coherence::io::pof::PortableObject;
    00033 using coherence::util::Filter;
    00034 using coherence::util::InvocableMap;
    00035
    00036
    00037 /**
    00038 * Conditional entry processor represents a processor that is invoked
    00039 * conditionally based on the result of an entry evaluation.
    00040 *
    00041 * @author tb  2008.04.28
    00042 */
    00043 class COH_EXPORT ConditionalProcessor
    00044     : public class_spec<ConditionalProcessor,
    00045         extends<AbstractProcessor>,
    00046         implements<PortableObject> >
    00047     {
    00048     friend class factory<ConditionalProcessor>;
    00049
    00050     // ----- constructors ---------------------------------------------------
    00051
    00052     protected:
    00053         /**
    00054         * Construct a ConditionalProcessor.
    00055         */
    00056         ConditionalProcessor();
    00057
    00058         /**
    00059         * Construct a ConditionalProcessor for the specified filter and the
    00060         * processor.
    00061         *
    00062         * The specified entry processor gets invoked if and only if the
    00063         * filter applied to the InvocableMap entry evaluates to true;
    00064         * otherwise the result of the process invocation will return
    00065         * NULL.
    00066         *
    00067         * @param vFilter     the filter
    00068         * @param vProcessor  the entry processor
    00069         */
    00070         ConditionalProcessor(Filter::View vFilter,
    00071                 InvocableMap::EntryProcessor::View vProcessor);
    00072
    00073
    00074     // ----- InvocableMap::EntryProcessor interface -------------------------
    00075
    00076     public:
    00077         /**
    00078         * {@inheritDoc}
    00079         */
    00080         virtual Object::Holder process(
    00081                 InvocableMap::Entry::Handle hEntry) const;
    00082
    00083         /**
    00084         * {@inheritDoc}
    00085         */
    00086         virtual Map::View processAll(Set::View vsetEntries) const;
    00087
    00088
    00089     // ----- PortableObject interface ---------------------------------------
    00090
    00091     public:
    00092         /**
    00093         * {@inheritDoc}
    00094         */
    00095         virtual void readExternal(PofReader::Handle hIn);
    00096
    00097         /**
    00098         * {@inheritDoc}
    00099         */
    00100         virtual void writeExternal(PofWriter::Handle hOut) const;
    00101
    00102
    00103     // ----- Object interface -----------------------------------------------
    00104
    00105     public:
    00106         /**
    00107         * {@inheritDoc}
    00108         */
    00109         virtual bool equals(Object::View v) const;
    00110
    00111         /**
    00112         * {@inheritDoc}
    00113         */
    00114         virtual size32_t hashCode() const;
    00115
    00116
    00117     // ----- data members ---------------------------------------------------
    00118
    00119     protected:
    00120         /**
    00121         * The underlying filter.
    00122         */
    00123         MemberView<Filter> m_vFilter;
    00124
    00125         /**
    00126         * The underlying entry processor.
    00127         */
    00128         MemberView<InvocableMap::EntryProcessor> m_vProcessor;
    00129
    00130     };
    00131
    00132 COH_CLOSE_NAMESPACE3
    00133
    00134 #endif // COH_CONDITIONAL_PROCESSOR_HPP

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