| OLD | NEW | 
|   1 /* |   1 /* | 
|   2  *  Copyright 2015 The WebRTC Project Authors. All rights reserved. |   2  *  Copyright 2015 The WebRTC Project Authors. All rights reserved. | 
|   3  * |   3  * | 
|   4  *  Use of this source code is governed by a BSD-style license |   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 |   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 |   6  *  tree. An additional intellectual property rights grant can be found | 
|   7  *  in the file PATENTS.  All contributing project authors may |   7  *  in the file PATENTS.  All contributing project authors may | 
|   8  *  be found in the AUTHORS file in the root of the source tree. |   8  *  be found in the AUTHORS file in the root of the source tree. | 
|   9  */ |   9  */ | 
|  10  |  10  | 
|  11 #ifndef WEBRTC_BASE_BUFFERQUEUE_H_ |  11 #ifndef WEBRTC_BASE_BUFFERQUEUE_H_ | 
|  12 #define WEBRTC_BASE_BUFFERQUEUE_H_ |  12 #define WEBRTC_BASE_BUFFERQUEUE_H_ | 
|  13  |  13  | 
|  14 #include <deque> |  | 
|  15 #include <vector> |  | 
|  16  |  14  | 
|  17 #include "webrtc/base/buffer.h" |  15 // This header is deprecated and is just left here temporarily during | 
|  18 #include "webrtc/base/constructormagic.h" |  16 // refactoring. See https://bugs.webrtc.org/7634 for more details. | 
|  19 #include "webrtc/base/criticalsection.h" |  17 #include "webrtc/rtc_base/bufferqueue.h" | 
|  20  |  | 
|  21 namespace rtc { |  | 
|  22  |  | 
|  23 class BufferQueue { |  | 
|  24  public: |  | 
|  25   // Creates a buffer queue with a given capacity and default buffer size. |  | 
|  26   BufferQueue(size_t capacity, size_t default_size); |  | 
|  27   virtual ~BufferQueue(); |  | 
|  28  |  | 
|  29   // Return number of queued buffers. |  | 
|  30   size_t size() const; |  | 
|  31  |  | 
|  32   // Clear the BufferQueue by moving all Buffers from |queue_| to |free_list_|. |  | 
|  33   void Clear(); |  | 
|  34  |  | 
|  35   // ReadFront will only read one buffer at a time and will truncate buffers |  | 
|  36   // that don't fit in the passed memory. |  | 
|  37   // Returns true unless no data could be returned. |  | 
|  38   bool ReadFront(void* data, size_t bytes, size_t* bytes_read); |  | 
|  39  |  | 
|  40   // WriteBack always writes either the complete memory or nothing. |  | 
|  41   // Returns true unless no data could be written. |  | 
|  42   bool WriteBack(const void* data, size_t bytes, size_t* bytes_written); |  | 
|  43  |  | 
|  44  protected: |  | 
|  45   // These methods are called when the state of the queue changes. |  | 
|  46   virtual void NotifyReadableForTest() {} |  | 
|  47   virtual void NotifyWritableForTest() {} |  | 
|  48  |  | 
|  49  private: |  | 
|  50   size_t capacity_; |  | 
|  51   size_t default_size_; |  | 
|  52   CriticalSection crit_; |  | 
|  53   std::deque<Buffer*> queue_ GUARDED_BY(crit_); |  | 
|  54   std::vector<Buffer*> free_list_ GUARDED_BY(crit_); |  | 
|  55  |  | 
|  56   RTC_DISALLOW_COPY_AND_ASSIGN(BufferQueue); |  | 
|  57 }; |  | 
|  58  |  | 
|  59 }  // namespace rtc |  | 
|  60  |  18  | 
|  61 #endif  // WEBRTC_BASE_BUFFERQUEUE_H_ |  19 #endif  // WEBRTC_BASE_BUFFERQUEUE_H_ | 
| OLD | NEW |