blob: 62e03da5b89d658f55513478c79573f8c7b250a0 [file] [log] [blame]
michaelt333d0ff2017-04-10 23:26:35 -07001/*
2 * Copyright 2017 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_TOOLS_NETWORK_TESTER_CONFIG_READER_H_
12#define WEBRTC_TOOLS_NETWORK_TESTER_CONFIG_READER_H_
13
14#include <fstream>
15#include <string>
16
17#include "webrtc/base/constructormagic.h"
18#include "webrtc/base/optional.h"
19
20#include "webrtc/base/ignore_wundef.h"
21
22#ifdef WEBRTC_NETWORK_TESTER_PROTO
23RTC_PUSH_IGNORING_WUNDEF()
24#include "webrtc/tools/network_tester/network_tester_config.pb.h"
25RTC_POP_IGNORING_WUNDEF()
26using webrtc::network_tester::config::NetworkTesterAllConfigs;
27#else
28class NetworkTesterConfigs;
29#endif // WEBRTC_NETWORK_TESTER_PROTO
30
31namespace webrtc {
32
33class ConfigReader {
34 public:
35 struct Config {
36 int packet_send_interval_ms;
37 int packet_size;
38 int execution_time_ms;
39 };
40 explicit ConfigReader(const std::string& config_file_path);
41 ~ConfigReader();
42
43 rtc::Optional<Config> GetNextConfig();
44
45 private:
46 NetworkTesterAllConfigs proto_all_configs_;
47 int proto_config_index_;
48 RTC_DISALLOW_COPY_AND_ASSIGN(ConfigReader);
49};
50
51} // namespace webrtc
52
53#endif // WEBRTC_TOOLS_NETWORK_TESTER_CONFIG_READER_H_