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