AM Daemon ライブラリリファレンス
WiFi.h
[詳解]
1 /// @file
2 /// @brief ALL.Net Wi-Fi 情報を提供するMonostateクラス WiFi のヘッダ。
3 ///
4 /// Copyright(C)SEGA
5 
6 #ifndef AMDAEMON_ALLNET_WIFI_H
7 #define AMDAEMON_ALLNET_WIFI_H
8 
9 #include "amdaemon/env.h"
13 
14 #include <functional>
15 #include <vector>
16 #include <cstddef>
17 
18 namespace amdaemon
19 {
20 namespace allnet
21 {
22 /// @addtogroup g_allnet
23 /// @{
24 
25  /// @brief ALL.Net Wi-Fi 情報を提供するMonostateクラス。
26  ///
27  /// Core クラスのメンバ関数 Core#execute 呼び出しによって内容が更新される。
28  ///
29  /// @par ゲームテストモードでのルータ情報表示
30  /// このクラスは主にゲームテストモードでの ALL.Net Wi-Fi ルータ情報表示に用いるが、
31  /// 最新値をそのまま表示しようとすると、表示処理中にメンバ関数 #getUnitCount や
32  /// #getUnit の返す値が変化する可能性があり、処理が煩雑になる。
33  /// @par
34  /// そのため、ルータ情報を表示開始するタイミング(表示画面に入った時)でメンバ関数
35  /// #saveUnitCache を呼び出し、キャッシュされた情報を表示するようにすることを推奨する。
36  /// @par
37  /// メンバ関数 #saveUnitCache を呼び出すと、
38  /// メンバ関数 #getUnitCount や #getUnit の返す値が最新値ではなくキャッシュされた値となり、
39  /// 表示処理中に値が変化する可能性を考慮する必要がなくなる。
40  /// @par
41  /// 表示を完了したタイミング(表示画面を抜けた時)では、メンバ関数
42  /// #clearUnitCache を呼び出すことでキャッシュが破棄され再び最新値を取得可能になる。
43  /// ただし最新値が不要であればこの呼び出しは行わなくともよい。
44  ///
45  /// @ingroup g_common
46  class WiFi
47  {
48  public:
49  // 下記は暗黙の定義を用いる。
50  //WiFi() = default;
51  //WiFi(const WiFi&) = default;
52  //‾WiFi() = default;
53  //WiFi& operator=(const WiFi&) = default;
54 
55  /// @brief ALL.Net Wi-Fi 機能を利用可能であるか否かを取得する。
56  /// @retval true 利用可能である場合。
57  /// @retval false 機能が無効である場合。
58  ///
59  /// Daemonプロセスの設定ファイルで ALL.Net Wi-Fi 設定を有効にしている場合であっても、
60  /// キーチップのALL.Net認証フラグが無効である場合は false を返す。
61  bool isAvailable() const;
62 
63  /// @brief ALL.Net Wi-Fi ルータ情報の有効数を取得する。
64  /// @return ALL.Net Wi-Fi ルータ情報の有効数。機能が無効である場合は 0 。
65  /// @see #saveUnitCache, #clearUnitCache
66  ///
67  /// 仕様上、正常に応答しているルータだけしか存在を確認できないため、
68  /// この関数の返す値は変化する可能性がある。 0 にもなりうる。
69  ///
70  /// ゲームテストモードでの情報表示に用いる場合、
71  /// 表示処理中に有効数が変化すると不都合があるため、
72  /// メンバ関数 #saveUnitCache によってキャッシュされた値を用いるようにするとよい。
73  ///
74  /// 詳しくは WiFi クラスの説明を参照すること。
75  std::size_t getUnitCount() const;
76 
77  /// @brief ALL.Net Wi-Fi ルータ情報を取得する。
78  /// @param[in] unitIndex 情報インデックス。
79  /// @return ALL.Net Wi-Fi ルータ情報。
80  /// @see #saveUnitCache, #clearUnitCache
81  ///
82  /// @exception Exception
83  /// 引数 unitIndex に MaxWiFiUnitCount 以上の値を指定した場合。
84  ///
85  /// メンバ関数 #getUnitCount で取得できる有効数以上の値を引数 unitIndex に指定した場合、
86  /// この関数は無効なルータ情報を返す。他クラスの類似関数とは異なり、例外は送出しない。
87  ///
88  /// この関数の返す情報は、ルータから定期的に送信される内容によって変化する。
89  ///
90  /// ゲームテストモードでの情報表示に用いる場合、
91  /// 表示処理中に内容が変化すると不都合があるため、
92  /// メンバ関数 #saveUnitCache によってキャッシュされた値を用いるようにするとよい。
93  ///
94  /// キャッシュに関して詳しくは WiFi クラスの説明を参照すること。
95  const WiFiUnit& getUnit(std::size_t unitIndex) const;
96 
97  /// @brief ALL.Net Wi-Fi ルータ情報配列を取得する。
98  /// @return ALL.Net Wi-Fi ルータ情報配列。
99  /// @see #saveUnitCache, #clearUnitCache
100  ///
101  /// 範囲for文や各種アルゴリズム関数に渡すことを想定している。
102  ///
103  /// - ルータ情報の有効数を知りたいだけならばメンバ関数 #getUnitCount を用いること。
104  /// - 特定のルータ情報を取得したいだけならばメンバ関数 #getUnit を用いること。
105  std::vector<std::reference_wrapper<const WiFiUnit>> getUnits() const
106  {
107  return
108  ::amdaemon::util::toContainer<decltype(this->getUnits())>(
109  this->getUnitCount(),
110  [this](std::size_t i) -> const WiFiUnit& { return this->getUnit(i); });
111  }
112 
113  /// @brief ALL.Net Wi-Fi ルータ情報の現在値をキャッシュする。
114  /// @see #getUnitCount, #getUnit, #getUnits
115  ///
116  /// この関数を呼び出した時点での ALL.Net Wi-Fi ルータ情報の最新値を内部でキャッシュする。
117  ///
118  /// 以降のメンバ関数 #getUnitCount, #getUnit, #getUnits 呼び出しにおいては、
119  /// 最新値ではなくキャッシュされた値が返るようになる。
120  /// もう一度この関数を呼び出すか、メンバ関数 #clearUnitCache を呼び出すまで、
121  /// キャッシュされた値が変化することはない。
122  ///
123  /// 既にキャッシュされた情報が存在する状態でこの関数を呼び出した場合、
124  /// 呼び出した時点での最新値で上書きキャッシュする。
125  ///
126  /// この関数は主にゲームテストモードでの情報表示のために用いる。
127  /// 詳しくは WiFi クラスの説明を参照すること。
128  void saveUnitCache();
129 
130  /// @brief ALL.Net Wi-Fi ルータ情報のキャッシュを破棄する。
131  /// @see #getUnitCount, #getUnit, #getUnits
132  ///
133  /// メンバ関数 #saveUnitCache によって内部にキャッシュされた情報を破棄する。
134  /// キャッシュされた情報が無い場合は何もしない。
135  ///
136  /// この関数を呼び出すと、以降のメンバ関数 #getUnitCount, #getUnit, #getUnits
137  /// 呼び出しでは最新値が返るようになる。
138  void clearUnitCache();
139 
140  /// @brief ALL.Net Wi-Fi ルータ情報がキャッシュされているか否かを取得する。
141  /// @retval true キャッシュされている場合。
142  /// @retval false キャッシュされていない場合。(既定値)
143  ///
144  /// この関数は、メンバ関数 #saveUnitCache を呼び出すと true を返すようになる。
145  /// その後はメンバ関数 #clearUnitCache が呼び出されるまで true を返し続ける。
146  bool isUnitCacheSaved() const;
147  };
148 
149 /// @}
150 } // namespace allnet
151 } // namespace amdaemon
152 
153 #endif // AMDAEMON_ALLNET_WIFI_H
std::size_t getUnitCount() const
ALL.Net Wi-Fi ルータ情報の有効数を取得する。
void clearUnitCache()
ALL.Net Wi-Fi ルータ情報のキャッシュを破棄する。
bool isAvailable() const
ALL.Net Wi-Fi 機能を利用可能であるか否かを取得する。
Daemonライブラリの環境定義を行うヘッダ。
AM Daemon ライブラリクラス群の基底名前空間。
Definition: Log.h:13
ALL.Net Wi-Fi 関連の情報を定義するヘッダ。
bool isUnitCacheSaved() const
ALL.Net Wi-Fi ルータ情報がキャッシュされているか否かを取得する。
ALL.Net Wi-Fi 情報を提供するMonostateクラス。
Definition: WiFi.h:46
DestContainer toContainer(SrcContainer &&src)
コンテナを別のコンテナ型に変換する。
Definition: container.h:133
コンテナクラス関連の便利処理を提供するヘッダ。
ALL.Net Wi-Fi ルータの情報を提供するクラス WiFiUnit のヘッダ。
std::vector< std::reference_wrapper< const WiFiUnit > > getUnits() const
ALL.Net Wi-Fi ルータ情報配列を取得する。
Definition: WiFi.h:105
const WiFiUnit & getUnit(std::size_t unitIndex) const
ALL.Net Wi-Fi ルータ情報を取得する。
void saveUnitCache()
ALL.Net Wi-Fi ルータ情報の現在値をキャッシュする。
ALL.Net Wi-Fi ルータの情報を提供するクラス。
Definition: WiFiUnit.h:33