Oracle Coherence for C++ API
Release 3.7.1.0
E22845-01
00001 /* 00002 * AbstractPriorityTask.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_ABSTRACT_PRIORITY_TASK_HPP 00017 #define COH_ABSTRACT_PRIORITY_TASK_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/PriorityTask.hpp" 00025 00026 COH_OPEN_NAMESPACE2(coherence,net) 00027 00028 using coherence::io::pof::PofReader; 00029 using coherence::io::pof::PofWriter; 00030 using coherence::io::pof::PortableObject; 00031 00032 00033 /** 00034 * An abstract base for AbstractPriorityTask implementations. It implements 00035 * all AbstractPriorityTask interface methods and is intended to be extended 00036 * for concrete uses. 00037 * 00038 * @author djl 2008.05.15 00039 */ 00040 class COH_EXPORT AbstractPriorityTask 00041 : public abstract_spec<AbstractPriorityTask, 00042 extends<Object>, 00043 implements<PortableObject, PriorityTask> > 00044 { 00045 // ----- constructors --------------------------------------------------- 00046 00047 protected: 00048 /** 00049 * @internal 00050 */ 00051 AbstractPriorityTask(); 00052 00053 00054 // ----- PriorityTask interface ----------------------------------------- 00055 00056 public: 00057 /** 00058 * {@inheritDoc} 00059 */ 00060 virtual int32_t getSchedulingPriority() const; 00061 00062 /** 00063 * {@inheritDoc} 00064 */ 00065 virtual int64_t getExecutionTimeoutMillis() const; 00066 00067 /** 00068 * {@inheritDoc} 00069 */ 00070 virtual int64_t getRequestTimeoutMillis() const; 00071 00072 /** 00073 * {@inheritDoc} 00074 * <p> 00075 * This implementation is a no-op. 00076 */ 00077 virtual void runCanceled(bool fAbandoned); 00078 00079 00080 // ----- PortableObject interface --------------------------------------- 00081 00082 public: 00083 /** 00084 * {@inheritDoc} 00085 */ 00086 virtual void readExternal(PofReader::Handle hIn); 00087 00088 /** 00089 * {@inheritDoc} 00090 */ 00091 virtual void writeExternal(PofWriter::Handle hOut) const; 00092 00093 00094 // ----- Data member mutators ------------------------------------------- 00095 00096 public: 00097 /** 00098 * Specify this task's scheduling priority. Valid values are one of 00099 * the SCHEDULE_* constants. 00100 * 00101 * @param iPriority this task's scheduling priority 00102 */ 00103 virtual void setSchedulingPriority(int32_t iPriority); 00104 00105 /** 00106 * Specify the maximum amount of time this task is allowed to run 00107 * before the corresponding service will attempt to stop it. 00108 * 00109 * @param lTimeout the task timeout value in milliseconds 00110 */ 00111 virtual void setExecutionTimeoutMillis(int64_t lTimeout); 00112 00113 /** 00114 * Specify the maximum amount of time a calling thread is willing to 00115 * wait for a result of the request execution. 00116 * 00117 * @param lTimeout the request timeout value in milliseconds 00118 */ 00119 virtual void setRequestTimeoutMillis(int64_t lTimeout); 00120 00121 00122 // ----- data members --------------------------------------------------- 00123 00124 private: 00125 /** 00126 * The scheduling priority value. 00127 * 00128 * Default value PriorityTask::schedule_standard 00129 */ 00130 int32_t m_iSchedulingPriority; 00131 00132 /** 00133 * The task execution timeout value. 00134 * 00135 * Default value PriorityTask::timeout_default 00136 */ 00137 int64_t m_lExecutionTimeout; 00138 00139 /** 00140 * The request timeout value. 00141 * 00142 * Default value PriorityTask::timeout_default 00143 */ 00144 int64_t m_lRequestTimeout; 00145 }; 00146 00147 COH_CLOSE_NAMESPACE2 00148 00149 #endif // COH_ABSTRACT_PRIORITY_TASK_HPP