Rust で Windows のパフォーマンスカウンターをとってみる
前回作った車輪の再発明!! 言い訳はしない!
色々頑張った結果…
fn main() { let path_list = vec!["\\Memory\\Available Mbytes"]; if let Some(pdhc) = PdhController::new(path_list) { let m = pdhc.current_values(); println!("{:?}", m); } }
main 関数がこうなりました。だーいぶ隠せたかな?
大まかな流れ
とりたいメトリクスの PATH 配列を入力として、カウンター取得のための構造体を作成。
current_values() を呼び出すたびにそのタイミングでの値が Vec で返ってくる寸法。
PDH_HQUERY の開放も、 PdhController がスコープ外になって消えるタイミングでやるように trait を実装。
改善すべき点
- 一番最初の HCOUNTER 取得から PdhController 生成の部分が胡散臭い。
- PATH の部分を文字列でなく PDH_COUNTER_PATH_ELEMENTS の wrapper なりにすれば、もうちょい使いやすくなるかも。
- 値を返すのでなく、値を順繰りとれる iter は実装中。
iter ができたら、送信部分つくってみるかー