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 "typedefs.h" 15 16 namespace webrtc { 17 namespace test { 18 19 // Reads chunks of data to simulate network packets from a byte array. 20 class PacketReader { 21 public: 22 PacketReader(); 23 virtual ~PacketReader(); 24 25 // Inizializes a new reading operation. Must be done before invoking the 26 // NextPacket method. 27 // * data_length_in_bytes is the length of the data byte array. Must be >= 0. 28 // 0 length will result in no packets are read. 29 // * packet_size_in_bytes is the number of bytes to read in each NextPacket 30 // method call. Must be > 0 31 virtual void InitializeReading(WebRtc_UWord8* data, int data_length_in_bytes, 32 int packet_size_in_bytes); 33 34 // Moves the supplied pointer to the beginning of the next packet. 35 // Returns: 36 // * The size of the packet ready to read (lower than the packet size for 37 // the last packet) 38 // * 0 if there are no more packets to read 39 // * -1 if InitializeReading has not been called (also prints to stderr). 40 virtual int NextPacket(WebRtc_UWord8** packet_pointer); 41 42 private: 43 WebRtc_UWord8* data_; 44 int data_length_; 45 int packet_size_; 46 int currentIndex_; 47 bool initialized_; 48 }; 49 50 } // namespace test 51 } // namespace webrtc 52 53 #endif // WEBRTC_TEST_TESTSUPPORT_PACKET_READER_H_ 54