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