1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: boss_TaskAction.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: 33031 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_BOSS_BOSS_TASK_ACTION_H_ 17 #define NN_BOSS_BOSS_TASK_ACTION_H_ 18 19 #include <nn/types.h> 20 #include <nn/http/http_Types.h> 21 #include <nn/ssl/ssl_Const.h> 22 23 #include <nn/boss/boss_Const.h> 24 #include <nn/boss/boss_Result.h> 25 #include <nn/boss/boss_Types.h> 26 27 #ifdef __cplusplus 28 29 namespace nn { 30 namespace boss { 31 32 33 /*! 34 @brief タスクアクションの基底となるクラスです。アプリケーションが直接インスタンス化しての用途はありません。 35 */ 36 class TaskActionBase 37 { 38 protected: 39 /*! 40 @brief コンストラクタです。 41 */ 42 explicit TaskActionBase(void); 43 44 /*! 45 @brief デストラクタです。 46 */ 47 virtual ~TaskActionBase(void); 48 49 public: 50 /*! 51 @brief 登録した独自ルート証明書の使用を設定します。 52 内臓されているルート証明書と併用できます。 53 @return 関数の実行結果を返します。以下に挙げる Result を返します。 54 @retval ResultSuccess 設定に成功しました。 55 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 56 */ 57 nn::Result SetPrivateRootCa(void); 58 59 /*! 60 @brief 機器に内蔵されているルート証明書の使用を設定します。 61 独自ルート証明書と併用できます。 62 @param[in] certStoreName 証明書ストア名を指定します。 63 @return 関数の実行結果を返します。以下に挙げる Result を返します。 64 @retval ResultSuccess 設定に成功しました。 65 @retval ResultInvalidMaxRootCa ルートCAの最大設定数を超えました。 66 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 67 */ 68 nn::Result SetRootCa(const nn::http::InternalCaCertId inCaCertName); 69 70 /*! 71 @brief 登録した独自クライアント証明書の使用を設定します。 72 独自ルート証明書のみが使用されます。 73 @return 関数の実行結果を返します。以下に挙げる Result を返します。 74 @retval ResultSuccess 設定に成功しました。 75 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 76 */ 77 nn::Result SetPrivateClientCert(void); 78 79 80 81 /*! 82 @brief 機器に内蔵されているクライアント証明書の使用を設定します。 83 指定された機器内蔵クライアント証明書1枚のみが使用されます。 84 @param[in] certStoreName 証明書ストア名を指定します。 85 @return 関数の実行結果を返します。以下に挙げる Result を返します。 86 @retval ResultSuccess 設定に成功しました。 87 @retval ResultInvalidMaxClientCert ClientCertの最大設定数を超えました。 88 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 89 */ 90 nn::Result SetClientCert(const nn::http::InternalClientCertId inClientCertName); 91 92 93 /*! 94 @brief アクセスポイント情報を付加します。 95 @param[in] info アクセスポイント情報を指定します。 96 @return 関数の実行結果を返します。以下に挙げる Result を返します。 97 @retval ResultSuccess 設定に成功しました。 98 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 99 */ 100 nn::Result SetApInfo(ApInfoType info); 101 102 103 /*! 104 @brief httpヘッダ部にヘッダ追加を設定します。 105 @param[in] pLabel ヘッダ名を指定します。 106 @param[in] pValue ヘッダ値を指定します。 107 @return 関数の実行結果を返します。以下に挙げる Result を返します。 108 @retval ResultSuccess 設定に成功しました。 109 @retval ResultHttpRequestHeaderPointerNull HTTPリクエストヘッダのポインタがNULLです。 110 @retval ResultInvalidMaxHttpRequestHeader HTTPリクエストヘッダの登録数が最大数を超えました。 111 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 112 */ 113 nn::Result AddHeaderField(const char* pLabel, const char* pValue); 114 115 /*! 116 @brief LastModifiedTimeの初期値を設定します。 117 @param[in] pLastModifiedTime 設定するLastModifiedTime文字列(この文字列が、そのままHTTPリクエストのIf-Modified-Sinceヘッダフィールドに設定されます。) 118 @return 関数の実行結果を返します。以下に挙げる Result を返します。 119 @retval ResultSuccess 設定に成功しました。 120 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 121 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 122 */ 123 nn::Result SetLastModifiedTime(const char* pLastModifiedTime); 124 125 protected: 126 /*! 127 @brief クラス内のプロパティの値を設定します。説明部のデータ型の領域を確保した後、呼び出してください。 128 下記のプロパティを使用できます。 \n 129 識別子 説明 \n 130 ACTION_URL 対象のURL。データの型は、char[MAX_URL_LENGTH] です。 \n 131 ACTION_HTTP_HEADER URLのオプションリクエストヘッダ構造体。データの型は、struct httpRequestHeader[MAX_HTTP_HEADER] です。 \n 132 ACTION_CLIENT_CERT https通信用の内蔵クライアント証明書。データの型は、nn::http::InternalClientCertId[MAX_CLIENT_CERT] です。 \n 133 ACTION_CLIENT_CERT_NUM 内蔵クライアント証明書の設定数。データの型は、u32 です。 \n 134 ACTION_ROOT_CA https通信用の内蔵ルート証明書。データの型は、nn::http::InternalCaCertId です。 \n 135 ACTION_ROOT_CA_NUM 内蔵ルート証明書を指定の設定数。データの型は、u32 です。 \n 136 ACTION_PRIVATE_CLIENT_CERT プライベートクライアント証明書の有効フラグ。データの型は、u8 です。 \n 137 ACTION_PRIVATE_ROOT_CA プライベートルート証明書の有効フラグ。データの型は、u8 です。 \n 138 ACTION_AP_INFO HTTPクエリーへAP情報付与のためのアクセスポイント情報種別。データの型は、ApInfoType です。 \n 139 ACTION_LAST_MODIFIED_TIME HTTPリクエストヘッダに設定する最終更新日時。データの型は、char[MAX_LASTMODIFIED_LENGTH] です。 \n 140 @param[in] type プロパティの識別子を指定します。 141 @param[in] pValue 値を指定します。 142 @param[in] size 値のサイズを指定します。 143 @return 関数の実行結果を返します。以下に挙げる Result を返します。 144 @retval ResultSuccess 設定に成功しました。 145 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 146 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 147 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 148 */ 149 nn::Result SetHttpProperty(PropertyType type, const void* pValue, size_t size) ; 150 151 /*! 152 @brief クラス内のプロパティの値を取得します。説明部のデータ型の領域を確保した後、呼び出してください。 153 下記のプロパティを使用できます。 \n 154 識別子 説明 \n 155 ACTION_URL 対象のURL。データの型は、char[MAX_URL_LENGTH] です。 \n 156 ACTION_HTTP_HEADER URLのオプションリクエストヘッダ構造体。データの型は、struct httpRequestHeader[MAX_HTTP_HEADER] です。 \n 157 ACTION_CLIENT_CERT https通信用の内蔵クライアント証明書。データの型は、nn::http::InternalClientCertId[MAX_CLIENT_CERT] です。 \n 158 ACTION_CLIENT_CERT_NUM 内蔵クライアント証明書の設定数。データの型は、u32 です。 \n 159 ACTION_ROOT_CA https通信用の内蔵ルート証明書。データの型は、nn::http::InternalCaCertId です。 \n 160 ACTION_ROOT_CA_NUM 内蔵ルート証明書を指定の設定数。データの型は、u32 です。 \n 161 ACTION_PRIVATE_CLIENT_CERT プライベートクライアント証明書の有効フラグ。データの型は、u8 です。 \n 162 ACTION_PRIVATE_ROOT_CA プライベートルート証明書の有効フラグ。データの型は、u8 です。 \n 163 ACTION_AP_INFO HTTPクエリーへAP情報付与のためのアクセスポイント情報種別。データの型は、ApInfoType です。 \n 164 @param[in] type プロパティの識別子を指定します。 165 @param[out] pValue 値を指定します。 166 @param[in] size 値のサイズを指定します。 167 @return 関数の実行結果を返します。以下に挙げる Result を返します。 168 @retval ResultSuccess 取得に成功しました。 169 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 170 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 171 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 172 */ 173 nn::Result GetHttpProperty(PropertyType type, void* pValue, size_t size) ; 174 175 /*! 176 @brief クラス内のプロパティの値を取得します。説明部のデータ型の領域を確保した後、呼び出してください。 177 下記のプロパティを使用できます。 \n 178 識別子 説明 \n 179 ACTION_OFFSET URLで指定したデータの先頭位置オフセット。データの型は、u32 です。 \n 180 ACTION_FILEPATH ダウンロード先のファイルパス。データの型は、char[MAX_FILEPATH_LENGTH] です。 \n 181 ACTION_FILEPATH_W ダウンロード先のファイルパス。データの型は、wchar_t[MAX_FILEPATH_LENGTH] です。 \n 182 ACTION_FILE_HANDLE ダウンロード先のファイルハンドル。データの型は、nn::Handle です。 \n 183 @param[in] type プロパティの識別子を指定します。 184 @param[out] pValue 値を指定します。 185 @param[in] size 値のサイズを指定します。 186 @return 関数の実行結果を返します。以下に挙げる Result を返します。 187 @retval ResultSuccess 設定に成功しました。 188 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 189 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 190 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 191 */ 192 nn::Result SetFileProperty(PropertyType type, const void* pValue, size_t size) ; 193 194 /*! 195 @brief クラス内のプロパティの値を取得します。説明部のデータ型の領域を確保した後、呼び出してください。 196 下記のプロパティを使用できます。 \n 197 識別子 説明 \n 198 ACTION_OFFSET URLで指定したデータの先頭位置オフセット。データの型は、u32 です。 \n 199 ACTION_FILEPATH ダウンロード先のファイルパス。データの型は、char[MAX_FILEPATH_LENGTH] です。 \n 200 ACTION_FILEPATH_W ダウンロード先のファイルパス。データの型は、wchar_t[MAX_FILEPATH_LENGTH] です。 \n 201 ACTION_FILE_HANDLE ダウンロード先のファイルハンドル。データの型は、nn::Handle です。 \n 202 @param[in] type プロパティの識別子を指定します。 203 @param[out] pValue 値を指定します。 204 @param[in] size 値のサイズを指定します。 205 @return 関数の実行結果を返します。以下に挙げる Result を返します。 206 @retval ResultSuccess 取得に成功しました。 207 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 208 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 209 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 210 */ 211 nn::Result GetFileProperty(PropertyType type, void* pValue, size_t size) ; 212 213 214 friend class AccessConfig; 215 TaskActionConfig m_Action; 216 }; 217 218 219 /*! 220 @brief タスクアクションを表すクラスです。NADLタスクなど、具体的なタスクアクションクラスの基底クラスとなります。 221 また特定タスクのタスクアクション情報を取得する際には、直接インスタンス化して利用します。 222 */ 223 class TaskAction : public TaskActionBase 224 { 225 public: 226 /*! 227 @brief コンストラクタです。 228 */ 229 explicit TaskAction(void); 230 231 /*! 232 @brief デストラクタです。 233 */ 234 virtual ~TaskAction(void); 235 236 /*! 237 @brief クラス内のプロパティの値を取得します。 238 下記のプロパティを使用できます。\n 239 識別子 型 \n 240 ACTION_URL char url[MAX_URL_LENGTH] \n 241 ACTION_OFFSET u32 \n 242 ACTION_FILEPATH char filepath [MAX_FILEPATH_LENGTH] \n 243 ACTION_FILEPATH_W wchar_t filePathW[MAX_FILEPATH_LENGTH] \n 244 ACTION_FILE_HANDLE nn::Handle \n 245 ACTION_HTTP_HEADER struct httpRequestHeader[MAX_HTTP_HEADER] \n 246 ACTION_CLIENT_CERT u8 \n 247 ACTION_ROOT_CA u8 \n 248 ACTION_AP_INFO ApInfoType \n 249 SIGNAL_TASK_EVENT nn::os::Event* \n 250 @param[in] PropertyType type プロパティの識別子を指定します。 251 @param[in] void* pValue 値を指定します。 252 @param[in] size_t size 値のサイズを指定します。 253 @return 関数の実行結果を返します。以下に挙げる Result を返します。 254 @retval ResultSuccess 取得に成功しました。 255 @retval ResultInvalidPropertyValue プロパティ値のポインタがNULLです。 256 @retval ResultInvalidPropertyType プロパティタイプがサポート外です。 257 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 258 */ 259 nn::Result virtual GetProperty(PropertyType type, void* pValue, size_t size); 260 261 }; 262 263 264 } // end of namespace boss 265 } // end of namespace nn 266 267 #endif // __cplusplus 268 269 #endif /* NN_BOSS_BOSS_TASK_ACTION_H_ */ 270 271