1 /* 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 */ 10 11 #ifndef WEBRTC_TEST_TESTSUPPORT_PACKET_READER_H_ 12 #define WEBRTC_TEST_TESTSUPPORT_PACKET_READER_H_ 13 14 #include <cstddef> 15 #include "webrtc/typedefs.h" 16 17 namespace webrtc { 18 namespace test { 19 20 // Reads chunks of data to simulate network packets from a byte array. 21 class PacketReader { 22 public: 23 PacketReader(); 24 virtual ~PacketReader(); 25 26 // Inizializes a new reading operation. Must be done before invoking the 27 // NextPacket method. 28 // * data_length_in_bytes is the length of the data byte array. 29 // 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 32 virtual void InitializeReading(uint8_t* data, size_t data_length_in_bytes, 33 size_t packet_size_in_bytes); 34 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). 41 virtual int NextPacket(uint8_t** packet_pointer); 42 43 private: 44 uint8_t* data_; 45 size_t data_length_; 46 size_t packet_size_; 47 size_t currentIndex_; 48 bool initialized_; 49 }; 50 51 } // namespace test 52 } // namespace webrtc 53 54 #endif // WEBRTC_TEST_TESTSUPPORT_PACKET_READER_H_ 55