/*---------------------------------------------------------------------------* Project: Horizon File: boss_TaskPolicy.h Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 26265 $ *---------------------------------------------------------------------------*/ #ifndef NN_BOSS_BOSS_TASK_POLICY_H_ #define NN_BOSS_BOSS_TASK_POLICY_H_ #include #include #include #ifdef __cplusplus namespace nn { namespace boss { /*! @brief タスクポリシーを表すクラスです。タスクを登録する際のポリシー情報設定などに利用します。 */ class TaskPolicy { public: /*! @brief コンストラクタです。 */ explicit TaskPolicy(void); /*! @brief デストラクタです。 */ virtual ~TaskPolicy(void); /*! @brief ポリシーの設定を行います。 @param[in] interval タスクの実行間隔を指定します。単位は時間です。 @param[in] count タスクの実行回数を指定します。 @return 処理の結果が返ります。
*/ inline nn::Result Initialize(u32 interval, u32 count){return InitializeWithSecInterval(interval*60*60, count);} /*! @brief ポリシーの設定を行います。実行間隔は秒で指定します。 @param[in] intervalSec タスクの実行間隔を指定します。単位は秒です。 @param[in] count タスクの実行回数を指定します。 @return 処理の結果が返ります。
*/ nn::Result InitializeWithSecInterval(u32 intervalSec, u32 count); /*! @brief ポリシーの設定を行います。 @param[in] priority タスク実行の優先度を指定します。 @param[in] interval タスクの実行間隔を指定します。単位は時間です。 @param[in] count タスクの実行回数を指定します。 @return 処理の結果が返ります。
*/ inline nn::Result Initialize(TaskPriority priority, u32 interval, u32 count){return InitializeWithSecInterval(priority, interval*60*60, count);} /*! @brief ポリシーの設定を行います。実行間隔は秒で指定します。 @param[in] priority タスク実行の優先度を指定します。 @param[in] intervalSec タスクの実行間隔を指定します。単位は秒です。 @param[in] count タスクの実行回数を指定します。 @return 処理の結果が返ります。
*/ nn::Result InitializeWithSecInterval(TaskPriority priority, u32 intervalSec, u32 count); /*! @brief 1回の実行時間の目安を設定します。(将来的にサポート予定です) @param[in] duration 1回の実行時間の目安を指定します。 @return 処理の結果が返ります。
*/ nn::Result SetDuration(u32 duration); /*! @brief タスク実行の優先度を設定します。 タスク実行の優先度は、状況およびサーバからの設定に従いスケジューラによって適切に変更されます。 @param[in] priority タスク実行の優先度を指定します。 @return 処理の結果が返ります。
*/ nn::Result SetPriority(TaskPriority priority); /*! @brief クラス内のプロパティの値を設定します。 下記のプロパティを使用できます。\n 識別子 型 \n TASK_PRIORITY TaskPriority \n TASK_SCHEDULING_POLICY SchedulingPolicy \n TASK_TARGET_DURATION u32 (sec.) \n TASK_EXEC_INTERVAL u32 (min.) \n TASK_EXEC_COUNT u32 \n TASK_PERMISSION TaskPermission \n @param[in] type プロパティの識別子を指定します。 @param[in] pValue 値を指定します。 @param[in] size 値のサイズを指定します。 @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_PROPERTYVALUE 「プロパティ値のポインタがNULLです。」を表すエラー @retval Description== @ref ER_INVALID_PROPERTYTYPE 「プロパティタイプがサポート外です。」を表すエラー */ nn::Result SetProperty(PropertyType type, void* pValue, size_t size); /*! @brief クラス内のプロパティの値を取得します。 下記のプロパティを使用できます。\n 識別子 型 \n TASK_PRIORITY TaskPriority \n TASK_SCHEDULING_POLICY SchedulingPolicy \n TASK_TARGET_DURATION u32 (sec.) \n TASK_EXEC_INTERVAL u32 (min.) \n TASK_EXEC_COUNT u32 \n TASK_PERMISSION TaskPermission \n @param[in] type プロパティの識別子を指定します。 @param[out] pValue 値を指定します。 @param[in] size 値のサイズを指定します。 @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_PROPERTYVALUE 「プロパティ値のポインタがNULLです。」を表すエラー @retval Description== @ref ER_INVALID_PROPERTYTYPE 「プロパティタイプがサポート外です。」を表すエラー */ nn::Result GetProperty(PropertyType type, void* pValue, size_t size); protected: friend class AccessConfig; TaskPolicyConfig m_Policy; private: }; } } #endif #endif /* NN_BOSS_BOSS_TASK_POLICY_H_ */