blob: dbdb3da9e9b4b35d5408423adf16f1a4fe776711 [file] [log] [blame]
kjellander@webrtc.org35a17562011-10-06 06:44:54 +00001/*
2 * Copyright (c) 2011 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 */
kjellander@webrtc.org5b97b122011-12-08 07:42:18 +000010
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef TEST_TESTSUPPORT_PACKET_READER_H_
12#define TEST_TESTSUPPORT_PACKET_READER_H_
kjellander@webrtc.org35a17562011-10-06 06:44:54 +000013
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +000014#include <cstddef>
Mirko Bonadei71207422017-09-15 13:58:09 +020015#include "typedefs.h" // NOLINT(build/include)
kjellander@webrtc.org35a17562011-10-06 06:44:54 +000016
17namespace webrtc {
18namespace test {
19
20// Reads chunks of data to simulate network packets from a byte array.
21class PacketReader {
22 public:
23 PacketReader();
24 virtual ~PacketReader();
25
26 // Inizializes a new reading operation. Must be done before invoking the
27 // NextPacket method.
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +000028 // * data_length_in_bytes is the length of the data byte array.
kjellander@webrtc.org35a17562011-10-06 06:44:54 +000029 // 0 length will result in no packets are read.
30 // * packet_size_in_bytes is the number of bytes to read in each NextPacket
31 // method call. Must be > 0
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +000032 virtual void InitializeReading(uint8_t* data, size_t data_length_in_bytes,
33 size_t packet_size_in_bytes);
kjellander@webrtc.org35a17562011-10-06 06:44:54 +000034
35 // Moves the supplied pointer to the beginning of the next packet.
36 // Returns:
37 // * The size of the packet ready to read (lower than the packet size for
38 // the last packet)
39 // * 0 if there are no more packets to read
40 // * -1 if InitializeReading has not been called (also prints to stderr).
pbos@webrtc.orga5f17872013-04-09 11:10:21 +000041 virtual int NextPacket(uint8_t** packet_pointer);
kjellander@webrtc.org35a17562011-10-06 06:44:54 +000042
43 private:
pbos@webrtc.orga5f17872013-04-09 11:10:21 +000044 uint8_t* data_;
pkasting@chromium.org4591fbd2014-11-20 22:28:14 +000045 size_t data_length_;
46 size_t packet_size_;
47 size_t currentIndex_;
kjellander@webrtc.org35a17562011-10-06 06:44:54 +000048 bool initialized_;
49};
50
51} // namespace test
52} // namespace webrtc
53
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020054#endif // TEST_TESTSUPPORT_PACKET_READER_H_