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

E26041-01

coherence/util/processor/ConditionalRemove.hpp

00001 /*
00002 * ConditionalRemove.hpp
00003 *
00004 * Copyright (c) 2000, 2013, 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_REMOVE_HPP
00017 #define COH_CONDITIONAL_REMOVE_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 * ConditionalRemove is an EntryProcessor that performs an
00039 * InvocableMap::Entry#remove Entry.remove operation if the specified
00040 * condition is satisfied.
00041 *
00042 * @author tb  2008.04.28
00043 */
00044 class COH_EXPORT ConditionalRemove
00045     : public class_spec<ConditionalRemove,
00046         extends<AbstractProcessor>,
00047         implements<PortableObject> >
00048     {
00049     friend class factory<ConditionalRemove>;
00050 
00051     // ----- constructors ---------------------------------------------------
00052 
00053     protected:
00054         /**
00055         * Construct a ConditionalRemove.
00056         */
00057         ConditionalRemove();
00058 
00059         /**
00060         * Construct a ConditionalRemove processor that removes an
00061         * InvocableMap entry if and only if the filter applied to the entry
00062         * evaluates to true.
00063         * This processor may optionally return the current value as a result
00064         * of the invocation if it has not been removed (the filter evaluated
00065         * to false).
00066         *
00067         * @param vFilter   the filter to evaluate an entry
00068         * @param fReturn  specifies whether or not the processor should
00069         *                 return the current value if it has not been removed
00070         */
00071         ConditionalRemove(Filter::View vFilter, bool fReturn = false);
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         * Specifies whether or not a return value is required.
00127         */
00128         bool m_fReturn;
00129     };
00130 
00131 COH_CLOSE_NAMESPACE3
00132 
00133 #endif // COH_CONDITIONAL_REMOVE_HPP
Copyright © 2000, 2013, Oracle and/or its affiliates. All rights reserved.