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