/*---------------------------------------------------------------------------* Project: Horizon File: boss_TaskAction.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: 33031 $ *---------------------------------------------------------------------------*/ #ifndef NN_BOSS_BOSS_TASK_ACTION_H_ #define NN_BOSS_BOSS_TASK_ACTION_H_ #include #include #include #include #include #include #ifdef __cplusplus namespace nn { namespace boss { /*! @brief タスクアクションの基底となるクラスです。アプリケーションが直接インスタンス化しての用途はありません。 */ class TaskActionBase { protected: /*! @brief コンストラクタです。 */ explicit TaskActionBase(void); /*! @brief デストラクタです。 */ virtual ~TaskActionBase(void); public: /*! @brief 登録した独自ルート証明書の使用を設定します。 内臓されているルート証明書と併用できます。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result SetPrivateRootCa(void); /*! @brief 機器に内蔵されているルート証明書の使用を設定します。 独自ルート証明書と併用できます。 @param[in] certStoreName 証明書ストア名を指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval ResultInvalidMaxRootCa ルートCAの最大設定数を超えました。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result SetRootCa(const nn::http::InternalCaCertId inCaCertName); /*! @brief 登録した独自クライアント証明書の使用を設定します。 独自ルート証明書のみが使用されます。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result SetPrivateClientCert(void); /*! @brief 機器に内蔵されているクライアント証明書の使用を設定します。 指定された機器内蔵クライアント証明書1枚のみが使用されます。 @param[in] certStoreName 証明書ストア名を指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval ResultInvalidMaxClientCert ClientCertの最大設定数を超えました。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result SetClientCert(const nn::http::InternalClientCertId inClientCertName); /*! @brief アクセスポイント情報を付加します。 @param[in] info アクセスポイント情報を指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result SetApInfo(ApInfoType info); /*! @brief httpヘッダ部にヘッダ追加を設定します。 @param[in] pLabel ヘッダ名を指定します。 @param[in] pValue ヘッダ値を指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval ResultHttpRequestHeaderPointerNull HTTPリクエストヘッダのポインタがNULLです。 @retval ResultInvalidMaxHttpRequestHeader HTTPリクエストヘッダの登録数が最大数を超えました。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result AddHeaderField(const char* pLabel, const char* pValue); /*! @brief LastModifiedTimeの初期値を設定します。 @param[in] pLastModifiedTime 設定するLastModifiedTime文字列(この文字列が、そのままHTTPリクエストのIf-Modified-Sinceヘッダフィールドに設定されます。) @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result SetLastModifiedTime(const char* pLastModifiedTime); protected: /*! @brief クラス内のプロパティの値を設定します。説明部のデータ型の領域を確保した後、呼び出してください。 下記のプロパティを使用できます。 \n 識別子 説明 \n ACTION_URL 対象のURL。データの型は、char[MAX_URL_LENGTH] です。 \n ACTION_HTTP_HEADER URLのオプションリクエストヘッダ構造体。データの型は、struct httpRequestHeader[MAX_HTTP_HEADER] です。 \n ACTION_CLIENT_CERT https通信用の内蔵クライアント証明書。データの型は、nn::http::InternalClientCertId[MAX_CLIENT_CERT] です。 \n ACTION_CLIENT_CERT_NUM 内蔵クライアント証明書の設定数。データの型は、u32 です。 \n ACTION_ROOT_CA https通信用の内蔵ルート証明書。データの型は、nn::http::InternalCaCertId です。 \n ACTION_ROOT_CA_NUM 内蔵ルート証明書を指定の設定数。データの型は、u32 です。 \n ACTION_PRIVATE_CLIENT_CERT プライベートクライアント証明書の有効フラグ。データの型は、u8 です。 \n ACTION_PRIVATE_ROOT_CA プライベートルート証明書の有効フラグ。データの型は、u8 です。 \n ACTION_AP_INFO HTTPクエリーへAP情報付与のためのアクセスポイント情報種別。データの型は、ApInfoType です。 \n ACTION_LAST_MODIFIED_TIME HTTPリクエストヘッダに設定する最終更新日時。データの型は、char[MAX_LASTMODIFIED_LENGTH] です。 \n @param[in] type プロパティの識別子を指定します。 @param[in] pValue 値を指定します。 @param[in] size 値のサイズを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result SetHttpProperty(PropertyType type, const void* pValue, size_t size) ; /*! @brief クラス内のプロパティの値を取得します。説明部のデータ型の領域を確保した後、呼び出してください。 下記のプロパティを使用できます。 \n 識別子 説明 \n ACTION_URL 対象のURL。データの型は、char[MAX_URL_LENGTH] です。 \n ACTION_HTTP_HEADER URLのオプションリクエストヘッダ構造体。データの型は、struct httpRequestHeader[MAX_HTTP_HEADER] です。 \n ACTION_CLIENT_CERT https通信用の内蔵クライアント証明書。データの型は、nn::http::InternalClientCertId[MAX_CLIENT_CERT] です。 \n ACTION_CLIENT_CERT_NUM 内蔵クライアント証明書の設定数。データの型は、u32 です。 \n ACTION_ROOT_CA https通信用の内蔵ルート証明書。データの型は、nn::http::InternalCaCertId です。 \n ACTION_ROOT_CA_NUM 内蔵ルート証明書を指定の設定数。データの型は、u32 です。 \n ACTION_PRIVATE_CLIENT_CERT プライベートクライアント証明書の有効フラグ。データの型は、u8 です。 \n ACTION_PRIVATE_ROOT_CA プライベートルート証明書の有効フラグ。データの型は、u8 です。 \n ACTION_AP_INFO HTTPクエリーへAP情報付与のためのアクセスポイント情報種別。データの型は、ApInfoType です。 \n @param[in] type プロパティの識別子を指定します。 @param[out] pValue 値を指定します。 @param[in] size 値のサイズを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetHttpProperty(PropertyType type, void* pValue, size_t size) ; /*! @brief クラス内のプロパティの値を取得します。説明部のデータ型の領域を確保した後、呼び出してください。 下記のプロパティを使用できます。 \n 識別子 説明 \n ACTION_OFFSET URLで指定したデータの先頭位置オフセット。データの型は、u32 です。 \n ACTION_FILEPATH ダウンロード先のファイルパス。データの型は、char[MAX_FILEPATH_LENGTH] です。 \n ACTION_FILEPATH_W ダウンロード先のファイルパス。データの型は、wchar_t[MAX_FILEPATH_LENGTH] です。 \n ACTION_FILE_HANDLE ダウンロード先のファイルハンドル。データの型は、nn::Handle です。 \n @param[in] type プロパティの識別子を指定します。 @param[out] pValue 値を指定します。 @param[in] size 値のサイズを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result SetFileProperty(PropertyType type, const void* pValue, size_t size) ; /*! @brief クラス内のプロパティの値を取得します。説明部のデータ型の領域を確保した後、呼び出してください。 下記のプロパティを使用できます。 \n 識別子 説明 \n ACTION_OFFSET URLで指定したデータの先頭位置オフセット。データの型は、u32 です。 \n ACTION_FILEPATH ダウンロード先のファイルパス。データの型は、char[MAX_FILEPATH_LENGTH] です。 \n ACTION_FILEPATH_W ダウンロード先のファイルパス。データの型は、wchar_t[MAX_FILEPATH_LENGTH] です。 \n ACTION_FILE_HANDLE ダウンロード先のファイルハンドル。データの型は、nn::Handle です。 \n @param[in] type プロパティの識別子を指定します。 @param[out] pValue 値を指定します。 @param[in] size 値のサイズを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetFileProperty(PropertyType type, void* pValue, size_t size) ; friend class AccessConfig; TaskActionConfig m_Action; }; /*! @brief タスクアクションを表すクラスです。NADLタスクなど、具体的なタスクアクションクラスの基底クラスとなります。 また特定タスクのタスクアクション情報を取得する際には、直接インスタンス化して利用します。 */ class TaskAction : public TaskActionBase { public: /*! @brief コンストラクタです。 */ explicit TaskAction(void); /*! @brief デストラクタです。 */ virtual ~TaskAction(void); /*! @brief クラス内のプロパティの値を取得します。 下記のプロパティを使用できます。\n 識別子 型 \n ACTION_URL char url[MAX_URL_LENGTH] \n ACTION_OFFSET u32 \n ACTION_FILEPATH char filepath [MAX_FILEPATH_LENGTH] \n ACTION_FILEPATH_W wchar_t filePathW[MAX_FILEPATH_LENGTH] \n ACTION_FILE_HANDLE nn::Handle \n ACTION_HTTP_HEADER struct httpRequestHeader[MAX_HTTP_HEADER] \n ACTION_CLIENT_CERT u8 \n ACTION_ROOT_CA u8 \n ACTION_AP_INFO ApInfoType \n SIGNAL_TASK_EVENT nn::os::Event* \n @param[in] PropertyType type プロパティの識別子を指定します。 @param[in] void* pValue 値を指定します。 @param[in] size_t size 値のサイズを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result virtual GetProperty(PropertyType type, void* pValue, size_t size); }; } // end of namespace boss } // end of namespace nn #endif // __cplusplus #endif /* NN_BOSS_BOSS_TASK_ACTION_H_ */