1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: boss_TaskPolicy.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 26265 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_BOSS_BOSS_TASK_POLICY_H_ 17 #define NN_BOSS_BOSS_TASK_POLICY_H_ 18 19 #include <nn/boss/boss_Const.h> 20 #include <nn/boss/boss_Result.h> 21 #include <nn/boss/boss_Types.h> 22 23 #ifdef __cplusplus 24 25 namespace nn { 26 namespace boss { 27 28 /*! 29 @brief タスクポリシーを表すクラスです。タスクを登録する際のポリシー情報設定などに利用します。 30 */ 31 class TaskPolicy 32 { 33 public: 34 /*! 35 @brief コンストラクタです。 36 */ 37 explicit TaskPolicy(void); 38 39 /*! 40 @brief デストラクタです。 41 */ 42 virtual ~TaskPolicy(void); 43 44 /*! 45 @brief ポリシーの設定を行います。 46 @param[in] interval タスクの実行間隔を指定します。単位は時間です。 47 @param[in] count タスクの実行回数を指定します。 48 @return 処理の結果が返ります。<BR> 49 */ Initialize(u32 interval,u32 count)50 inline nn::Result Initialize(u32 interval, u32 count){return InitializeWithSecInterval(interval*60*60, count);} 51 52 /*! 53 @brief ポリシーの設定を行います。実行間隔は秒で指定します。 54 @param[in] intervalSec タスクの実行間隔を指定します。単位は秒です。 55 @param[in] count タスクの実行回数を指定します。 56 @return 処理の結果が返ります。<BR> 57 */ 58 nn::Result InitializeWithSecInterval(u32 intervalSec, u32 count); 59 60 /*! 61 @brief ポリシーの設定を行います。 62 @param[in] priority タスク実行の優先度を指定します。 63 @param[in] interval タスクの実行間隔を指定します。単位は時間です。 64 @param[in] count タスクの実行回数を指定します。 65 @return 処理の結果が返ります。<BR> 66 */ Initialize(TaskPriority priority,u32 interval,u32 count)67 inline nn::Result Initialize(TaskPriority priority, u32 interval, u32 count){return InitializeWithSecInterval(priority, interval*60*60, count);} 68 69 /*! 70 @brief ポリシーの設定を行います。実行間隔は秒で指定します。 71 @param[in] priority タスク実行の優先度を指定します。 72 @param[in] intervalSec タスクの実行間隔を指定します。単位は秒です。 73 @param[in] count タスクの実行回数を指定します。 74 @return 処理の結果が返ります。<BR> 75 */ 76 nn::Result InitializeWithSecInterval(TaskPriority priority, u32 intervalSec, u32 count); 77 78 /*! 79 @brief 1回の実行時間の目安を設定します。(将来的にサポート予定です) 80 @param[in] duration 1回の実行時間の目安を指定します。 81 @return 処理の結果が返ります。<BR> 82 */ 83 nn::Result SetDuration(u32 duration); 84 85 /*! 86 @brief タスク実行の優先度を設定します。 87 タスク実行の優先度は、状況およびサーバからの設定に従いスケジューラによって適切に変更されます。 88 @param[in] priority タスク実行の優先度を指定します。 89 @return 処理の結果が返ります。<BR> 90 */ 91 nn::Result SetPriority(TaskPriority priority); 92 93 94 /*! 95 @brief クラス内のプロパティの値を設定します。 96 下記のプロパティを使用できます。\n 97 識別子 型 \n 98 TASK_PRIORITY TaskPriority \n 99 TASK_SCHEDULING_POLICY SchedulingPolicy \n 100 TASK_TARGET_DURATION u32 (sec.) \n 101 TASK_EXEC_INTERVAL u32 (min.) \n 102 TASK_EXEC_COUNT u32 \n 103 TASK_PERMISSION TaskPermission \n 104 @param[in] type プロパティの識別子を指定します。 105 @param[in] pValue 値を指定します。 106 @param[in] size 値のサイズを指定します。 107 @return 処理の結果が返ります。<BR> 108 @retval Description== @ref ER_INVALID_PROPERTYVALUE 「プロパティ値のポインタがNULLです。」を表すエラー 109 @retval Description== @ref ER_INVALID_PROPERTYTYPE 「プロパティタイプがサポート外です。」を表すエラー 110 */ 111 nn::Result SetProperty(PropertyType type, void* pValue, size_t size); 112 113 /*! 114 @brief クラス内のプロパティの値を取得します。 115 下記のプロパティを使用できます。\n 116 識別子 型 \n 117 TASK_PRIORITY TaskPriority \n 118 TASK_SCHEDULING_POLICY SchedulingPolicy \n 119 TASK_TARGET_DURATION u32 (sec.) \n 120 TASK_EXEC_INTERVAL u32 (min.) \n 121 TASK_EXEC_COUNT u32 \n 122 TASK_PERMISSION TaskPermission \n 123 @param[in] type プロパティの識別子を指定します。 124 @param[out] pValue 値を指定します。 125 @param[in] size 値のサイズを指定します。 126 @return 処理の結果が返ります。<BR> 127 @retval Description== @ref ER_INVALID_PROPERTYVALUE 「プロパティ値のポインタがNULLです。」を表すエラー 128 @retval Description== @ref ER_INVALID_PROPERTYTYPE 「プロパティタイプがサポート外です。」を表すエラー 129 */ 130 nn::Result GetProperty(PropertyType type, void* pValue, size_t size); 131 132 protected: 133 friend class AccessConfig; 134 TaskPolicyConfig m_Policy; 135 private: 136 }; 137 138 } 139 } 140 141 #endif 142 143 #endif /* NN_BOSS_BOSS_TASK_POLICY_H_ */ 144