CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
inet_Api.h
1 /*--------------------------------------------------------------------------------*
2  Copyright (C)Nintendo All rights reserved.
3 
4  These coded instructions, statements, and computer programs contain proprietary
5  information of Nintendo and/or its licensed developers and are protected by
6  national and international copyright laws. They may not be disclosed to third
7  parties or copied or duplicated in any form, in whole or in part, without the
8  prior written consent of Nintendo.
9 
10  The content herein is highly confidential and should be handled accordingly.
11  *--------------------------------------------------------------------------------*/
12 
13 
14 #pragma once
15 
16 #include <nn/pia/inet/inet_Definitions.h>
17 #include <nn/pia/transport/transport_StationLocation.h>
18 
19 // inet モジュールの非メンバ関数群です。
20 
21 namespace nn
22 {
23 namespace pia
24 {
25 namespace inet
26 {
27 
28 
29 /*!
30  @brief inet モジュールが初期化された状態であるかどうかを返します。
31 
32  @return 初期化されていれば true、されていなければ false が返されます。
33 */
34 bool IsInitialized(void);
35 
36 
37 /*!
38  @brief (デバッグ用) @ref inet::SetDebugSetting に渡すデバッグ機能設定用構造体です。
39 */
41 {
42  DebugSetting() :
45  isNatTypeCheckFailure(false),
48  {
49  }
50  uint8_t natTraversalFailureRatioForHost; //!< ホストとの NAT トラバーサル処理を失敗させる確率
51  uint8_t natTraversalFailureRatioForClient; //!< クライアントとの NAT トラバーサル処理を失敗させる確率
52  bool isNatTypeCheckFailure; //!< NAT タイプの判定処理を失敗させるかどうか
53  bool isDnsResolutionFailure; //!< NAT タイプの判定処理時に行う DNS 名前解決処理を失敗させるかどうか
54  Result falsifiedNatTraversalFailureResult; //!< NAT トラバーサル処理に失敗した際に返す Result を差し替える Result。ResultSuccess を指定する場合は、NAT トラバーサル失敗時に返る可能性のある Result をランダムに選択して返します。
55 };
56 
57 /*!
58  @brief inet モジュールを初期化します。
59 
60  @return 無事に初期化が完了すれば、成功の Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
61 
62  @retval ResultAlreadyInitialized 既に初期化は終了しています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
63 
64  @see Setting
65 */
67 
68 
69 /*!
70  @brief inetモジュールを終了します。
71 */
72 void Finalize(void);
73 
74 
75 /*!
76  @brief セットアップの開始を宣言します。
77  @details inetモジュールのシングルトンなどを作成する前に呼び出す必要があります。
78  アプリケーションが inet モジュールのシングルトンを一つも作成しない場合であっても、
79  このAPIと @ref EndSetup は必ず呼び出す必要があります。
80 
81  @return この API を適切なタイミングで呼び出していれば、成功の Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
82  @retval ResultNotInitialized inet モジュールの初期化関数が呼ばれていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
83  @retval ResultInvalidState この関数を呼び出すタイミングが誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
84 */
85 Result BeginSetup(void);
86 
87 
88 /*!
89  @brief セットアップの終了を宣言します。
90  @details inet モジュールのシングルトンなどを作成し終えた後に呼美出す必要があります。
91  この API 呼び出しにより、inet モジュールのシングルトンなどが消費する
92  メモリを確定し、ライブラリ内部でのメモリ管理を最適化します。
93  アプリケーションが inet モジュールのシングルトンを一つも作成しない場合であっても、
94  @ref BeginSetup とこの API は必ず呼び出す必要があります。
95 
96  @return この API を適切なタイミングで呼び出していれば、成功の Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
97  @retval ResultNotInitialized inet モジュールの初期化関数が呼ばれていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
98  @retval ResultInvalidState この関数を呼び出すタイミングが誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
99 */
100 Result EndSetup(void);
101 
102 
103 /*!
104  @cond PRIVATE
105  @brief BeginSetup() ~ EndSetup()間の状態であるかどうかを返します。
106  @endcond
107 */
108 bool IsInSetupMode(void);
109 
110 /*!
111  @brief (デバッグ用) inet のデバッグ用機能について設定します。
112  @details 本関数は inet のインスタンスが存在しない状態で呼出可能です。
113  DebugSetting 構造体の isEnableNatErrorEmulation を true に設定した場合、NATトラバーサルがエラーで失敗する設定となります。
114  本関数を呼び出さなかった場合、本関数が関連するデバッグ用機能は全て無効(使用しない)設定となります。
115  @attention 製品版 ROM では、本関数を呼び出さないように注意してください。
116 
117  @return 関数の実行結果を返します。処理が成功した場合、IsSuccess() が真となる Result を返します。この関数は常に成功します。
118 */
119 Result SetDebugSetting(const DebugSetting& debugSetting);
120 
121 /*!
122  @cond PRIVATE
123  @brief デバッグ用機能の設定を返します。
124  @endcond
125 */
126 DebugSetting* GetDebugSetting();
127 
128 /*!
129 @cond PRIVATE
130 @endcond
131 */
132 bool IsBehindNat(const transport::StationLocation& location);
133 
134 /*!
135 @cond PRIVATE
136 @endcond
137 */
138 bool IsPublic(const transport::StationLocation& location);
139 
140 /*!
141 @cond PRIVATE
142 @endcond
143 */
144 bool IsGlobal(const transport::StationLocation& location);
145 
146 /*!
147 @cond PRIVATE
148 @endcond
149 */
150 bool IsEdmMapping(const transport::StationLocation& location);
151 
152 /*!
153 @cond PRIVATE
154 @endcond
155 */
156 bool IsEimMapping(const transport::StationLocation& location);
157 }
158 }
159 } // end of namespace nn::pia::inet