Oracle® Fusion Middleware C++ API Reference for Oracle Coherence
12c (12.2.1.3.0)

E80355-01

coherence/util/processor/ConditionalProcessor.hpp

00001 /*
00002 * ConditionalProcessor.hpp
00003 *
00004 * Copyright (c) 2000, 2017, 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         FinalView<Filter> f_vFilter;
00124 
00125         /**
00126         * The underlying entry processor.
00127         */
00128         FinalView<InvocableMap::EntryProcessor> f_vProcessor;
00129 
00130     };
00131 
00132 COH_CLOSE_NAMESPACE3
00133 
00134 #endif // COH_CONDITIONAL_PROCESSOR_HPP
Copyright © 2000, 2017, Oracle and/or its affiliates. All rights reserved.