Oracle Coherence for C++ API
Release 3.7.1.0
E22845-01
00001 /* 00002 * PriorityProcessor.hpp 00003 * 00004 * Copyright (c) 2000, 2011, 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_PRIORITY_PROCESSOR_HPP 00017 #define COH_PRIORITY_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/net/AbstractPriorityTask.hpp" 00025 #include "coherence/util/InvocableMap.hpp" 00026 00027 COH_OPEN_NAMESPACE3(coherence,util,processor) 00028 00029 using coherence::io::pof::PofReader; 00030 using coherence::io::pof::PofWriter; 00031 using coherence::io::pof::PortableObject; 00032 using coherence::net::AbstractPriorityTask; 00033 using coherence::util::InvocableMap; 00034 00035 00036 /** 00037 * PriorityProcessor is used to explicitly control the scheduling priority and 00038 * timeouts for execution of EntryProcessor-based methods. 00039 * 00040 * @author tb 2008.05.23 00041 */ 00042 class COH_EXPORT PriorityProcessor 00043 : public class_spec<PriorityProcessor, 00044 extends<AbstractPriorityTask>, 00045 implements<InvocableMap::EntryProcessor, PortableObject> > 00046 { 00047 friend class factory<PriorityProcessor>; 00048 00049 // ----- constructors --------------------------------------------------- 00050 00051 protected: 00052 /** 00053 * Construct a PriorityProcessor. 00054 * 00055 * @return a new PriorityProcessor 00056 */ 00057 PriorityProcessor(); 00058 00059 /** 00060 * Construct a PriorityProcessor. 00061 * 00062 * @param processor the processor wrapped by this PriorityProcessor 00063 */ 00064 PriorityProcessor(InvocableMap::EntryProcessor::View vProcessor); 00065 00066 00067 // ----- InvocableMap::EntryProcessor interface ------------------------- 00068 00069 public: 00070 /** 00071 * {@inheritDoc} 00072 */ 00073 virtual Object::Holder process(InvocableMap::Entry::Handle hEntry) const; 00074 00075 /** 00076 * {@inheritDoc} 00077 */ 00078 virtual Map::View processAll(Set::View vSetEntries) const; 00079 00080 00081 // ----- accessors ------------------------------------------------------ 00082 00083 public: 00084 /** 00085 * Obtain the underlying processor. 00086 * 00087 * @return the processor wrapped by this PriorityProcessor 00088 */ 00089 virtual InvocableMap::EntryProcessor::View getProcessor() const; 00090 00091 00092 // ----- PortableObject interface --------------------------------------- 00093 00094 public: 00095 /** 00096 * {@inheritDoc} 00097 */ 00098 virtual void readExternal(PofReader::Handle hIn); 00099 00100 /** 00101 * {@inheritDoc} 00102 */ 00103 virtual void writeExternal(PofWriter::Handle hOut) const; 00104 00105 00106 // ----- Object interface ----------------------------------------------- 00107 00108 public: 00109 /** 00110 * {@inheritDoc} 00111 */ 00112 virtual void toStream(std::ostream &out) const; 00113 00114 00115 // ----- data members --------------------------------------------------- 00116 00117 protected: 00118 /** 00119 * The underlying entry processor. 00120 */ 00121 MemberView<InvocableMap::EntryProcessor> m_vProcessor; 00122 }; 00123 00124 COH_CLOSE_NAMESPACE3 00125 00126 #endif // COH_PRIORITY_PROCESSOR_HPP