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: 26265 $ 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 処理の結果が返ります。<BR> 54 */ 55 nn::Result SetPrivateRootCa(void); 56 57 /*! 58 @brief 機器に内蔵されているルート証明書の使用を設定します。 59 独自ルート証明書と併用できます。 60 @param[in] certStoreName 証明書ストア名を指定します。 61 @return 処理の結果が返ります。<BR> 62 @retval Description== @ref ER_INVALID_MAX_ROOT_CA 「ルートCAの最大設定数を超えました。」を表すエラー 63 */ 64 nn::Result SetRootCa(const nn::http::InternalCaCertId inCaCertName); 65 66 /*! 67 @brief 登録した独自クライアント証明書の使用を設定します。 68 独自ルート証明書のみが使用されます。 69 @return 処理の結果が返ります。<BR> 70 */ 71 nn::Result SetPrivateClientCert(void); 72 73 74 75 /*! 76 @brief 機器に内蔵されているクライアント証明書の使用を設定します。 77 指定された機器内蔵クライアント証明書1枚のみが使用されます。 78 @param[in] certStoreName 証明書ストア名を指定します。 79 @return 処理の結果が返ります。<BR> 80 @retval Description== @ref ER_INVALID_MAX_CLIENT_CERT 「ClientCertの最大設定数を超えました。」を表すエラー 81 */ 82 nn::Result SetClientCert(const nn::http::InternalClientCertId inClientCertName); 83 84 85 /*! 86 @brief アクセスポイント情報を付加します。 87 @param[in] info アクセスポイント情報を指定します。 88 @return 処理の結果が返ります。<BR> 89 */ 90 nn::Result SetApInfo(ApInfoType info); 91 92 93 /*! 94 @brief httpヘッダ部にヘッダ追加を設定します。 95 @param[in] pLabel ヘッダ名を指定します。 96 @param[in] pValue ヘッダ値を指定します。 97 @return 処理の結果が返ります。<BR> 98 @retval Description== @ref ER_HTTP_REQUEST_HEADER_POINTER_NULL 「HTTPリクエストヘッダのポインタがNULLです。」を表すエラー 99 @retval Description== @ref ER_INVALID_MAX_HTTP_REQUEST_HEADER 「HTTPリクエストヘッダの登録数が最大数を超えました。」を表すエラー 100 */ 101 nn::Result AddHeaderField(const char* pLabel, const char* pValue); 102 103 /*! 104 @brief LastModifiedTimeの初期値を設定します。 105 @param[in] pLastModifiedTime 設定するLastModifiedTime文字列(この文字列が、そのままHTTPリクエストのIf-Modified-Sinceヘッダフィールドに設定されます。) 106 @return 処理の結果が返ります。<BR> 107 @retval Description== @ref ER_INVALID_PROPERTYVALUE 「プロパティ値のポインタがNULLです。」を表すエラー 108 */ 109 nn::Result SetLastModifiedTime(const char* pLastModifiedTime); 110 111 protected: 112 /*! 113 @brief クラス内のプロパティの値を設定します。 114 下記のプロパティを使用できます。\n 115 識別子 型 \n 116 ACTION_HTTP_HEADER struct httpRequestHeader[MAX_HTTP_HEADER] \n 117 ACTION_CLIENT_CERT nn::http::InternalClientCertId clientCert[MAX_CLIENT_CERT] \n 118 ACTION_ROOT_CA nn::http::InternalCaCertId rootCA[MAX_ROOT_CA] \n 119 ACTION_AP_INFO ApInfoType \n 120 ACTION_PRIVATE_ROOT_CA u8 \n 121 ACTION_PRIVATE_CLIENT_CERT u8 \n 122 ACTION_LAST_MODIFIED_TIME lastModified[MAX_LASTMODIFIED_LENGTH] \n 123 124 @param[in] type プロパティの識別子を指定します。 125 @param[in] pValue 値を指定します。 126 @param[in] size 値のサイズを指定します。 127 @return 処理の結果が返ります。<BR> 128 */ 129 nn::Result SetHttpProperty(PropertyType type, void* pValue, size_t size) ; 130 131 /*! 132 @brief クラス内のプロパティの値を取得します。 133 下記のプロパティを使用できます。\n 134 識別子 型 \n 135 ACTION_HTTP_HEADER struct httpRequestHeader[MAX_HTTP_HEADER] \n 136 ACTION_CLIENT_CERT nn::http::InternalClientCertId clientCert[MAX_CLIENT_CERT] \n 137 ACTION_ROOT_CA nn::http::InternalCaCertId rootCA[MAX_ROOT_CA] \n 138 ACTION_AP_INFO ApInfoType \n 139 ACTION_PRIVATE_ROOT_CA u8 \n 140 ACTION_PRIVATE_CLIENT_CERT u8 \n 141 @param[in] type プロパティの識別子を指定します。 142 @param[out] pValue 値を指定します。 143 @param[in] size 値のサイズを指定します。 144 @return 処理の結果が返ります。<BR> 145 */ 146 nn::Result GetHttpProperty(PropertyType type, void* pValue, size_t size) ; 147 148 nn::Result SetFileProperty(PropertyType type, void* pValue, size_t size) ; 149 150 nn::Result GetFileProperty(PropertyType type, void* pValue, size_t size) ; 151 152 153 friend class AccessConfig; 154 TaskActionConfig m_Action; 155 }; 156 157 158 /*! 159 @brief タスクアクションを表すクラスです。NADLタスクなど、具体的なタスクアクションクラスの基底クラスとなります。また特定タスクのタスクアクション情報を取得する際には、直接インスタンス化して利用します。 160 */ 161 class TaskAction : public TaskActionBase 162 { 163 public: 164 /*! 165 @brief コンストラクタです。 166 */ 167 explicit TaskAction(void); 168 169 /*! 170 @brief デストラクタです。 171 */ 172 virtual ~TaskAction(void); 173 174 /*! 175 @brief クラス内のプロパティの値を取得します。 176 下記のプロパティを使用できます。\n 177 識別子 型 \n 178 ACTION_URL char url[MAX_URL_LENGTH] \n 179 ACTION_OFFSET u32 \n 180 ACTION_FILEPATH char filepath [MAX_FILEPATH_LENGTH] \n 181 ACTION_FILEPATH_W wchar_t filePathW[MAX_FILEPATH_LENGTH] \n 182 ACTION_FILE_HANDLE nn::Handle \n 183 ACTION_HTTP_HEADER struct httpRequestHeader[MAX_HTTP_HEADER] \n 184 ACTION_CLIENT_CERT u8 \n 185 ACTION_ROOT_CA u8 \n 186 ACTION_AP_INFO ApInfoType \n 187 SIGNAL_TASK_EVENT nn::os::Event* \n 188 @param[in] PropertyType type プロパティの識別子を指定します。 189 @param[in] void* pValue 値を指定します。 190 @param[in] size_t size 値のサイズを指定します。 191 @return 処理の結果が返ります。<BR> 192 @retval Description== @ref ER_INVALID_PROPERTYVALUE 「プロパティ値のポインタがNULLです。」を表すエラー 193 @retval Description== @ref ER_INVALID_PROPERTYTYPE 「プロパティタイプがサポート外です。」を表すエラー 194 */ 195 nn::Result virtual GetProperty(PropertyType type, void* pValue, size_t size); 196 197 }; 198 199 200 } // end of namespace boss 201 } // end of namespace nn 202 203 #endif // __cplusplus 204 205 #endif /* NN_BOSS_BOSS_TASK_ACTION_H_ */ 206 207