OLD | NEW |
| (Empty) |
1 /* | |
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 #include "webrtc/tools/network_tester/packet_logger.h" | |
11 | |
12 #include "webrtc/base/checks.h" | |
13 #include "webrtc/base/protobuf_utils.h" | |
14 | |
15 namespace webrtc { | |
16 | |
17 PacketLogger::PacketLogger(const std::string& log_file_path) | |
18 : packet_logger_stream_(log_file_path, | |
19 std::ios_base::out | std::ios_base::binary) { | |
20 RTC_DCHECK(packet_logger_stream_.is_open()); | |
21 RTC_DCHECK(packet_logger_stream_.good()); | |
22 } | |
23 | |
24 PacketLogger::~PacketLogger() = default; | |
25 | |
26 void PacketLogger::LogPacket(const NetworkTesterPacket& packet) { | |
27 // The protobuffer message will be saved in the following format to the file: | |
28 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
29 // | 1 byte | X byte | 1 byte | ... | X byte | | |
30 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
31 // | Size of the next | proto | Size of the next | ... | proto | | |
32 // | proto message | message | proto message | | message | | |
33 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
34 ProtoString packet_data; | |
35 packet.SerializeToString(&packet_data); | |
36 RTC_DCHECK_LE(packet_data.length(), 255); | |
37 RTC_DCHECK_GE(packet_data.length(), 0); | |
38 char proto_size = packet_data.length(); | |
39 packet_logger_stream_.write(&proto_size, sizeof(proto_size)); | |
40 packet_logger_stream_.write(packet_data.data(), packet_data.length()); | |
41 } | |
42 | |
43 } // namespace webrtc | |
OLD | NEW |