Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: webrtc/base/stream.h

Issue 1217473011: AppRTCDemo file logging. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Rebase Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 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
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 411
412 protected: 412 protected:
413 virtual void DoClose(); 413 virtual void DoClose();
414 414
415 FILE* file_; 415 FILE* file_;
416 416
417 private: 417 private:
418 DISALLOW_COPY_AND_ASSIGN(FileStream); 418 DISALLOW_COPY_AND_ASSIGN(FileStream);
419 }; 419 };
420 420
421 // A stream that caps the output at a certain size, dropping content from the
422 // middle of the logical stream and maintaining equal parts of the start/end of
423 // the logical stream.
424 class CircularFileStream : public FileStream {
425 public:
426 explicit CircularFileStream(size_t max_size);
427
428 bool Open(const std::string& filename, const char* mode, int* error) override;
429 StreamResult Read(void* buffer,
430 size_t buffer_len,
431 size_t* read,
432 int* error) override;
433 StreamResult Write(const void* data,
434 size_t data_len,
435 size_t* written,
436 int* error) override;
437
438 private:
439 enum ReadSegment {
440 READ_MARKED, // Read 0 .. marked_position_
441 READ_MIDDLE, // Read position_ .. file_size
442 READ_LATEST, // Read marked_position_ .. position_ if the buffer was
443 // overwritten or 0 .. position_ otherwise.
444 };
445
446 size_t max_write_size_;
447 size_t position_;
448 size_t marked_position_;
449 size_t last_write_position_;
450 ReadSegment read_segment_;
451 size_t read_segment_available_;
452 };
453
421 /////////////////////////////////////////////////////////////////////////////// 454 ///////////////////////////////////////////////////////////////////////////////
422 // MemoryStream is a simple implementation of a StreamInterface over in-memory 455 // MemoryStream is a simple implementation of a StreamInterface over in-memory
423 // data. Data is read and written at the current seek position. Reads return 456 // data. Data is read and written at the current seek position. Reads return
424 // end-of-stream when they reach the end of data. Writes actually extend the 457 // end-of-stream when they reach the end of data. Writes actually extend the
425 // end of data mark. 458 // end of data mark.
426 /////////////////////////////////////////////////////////////////////////////// 459 ///////////////////////////////////////////////////////////////////////////////
427 460
428 class MemoryStreamBase : public StreamInterface { 461 class MemoryStreamBase : public StreamInterface {
429 public: 462 public:
430 StreamState GetState() const override; 463 StreamState GetState() const override;
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 // as a pass in parameter, it indicates data in buffer that should move to sink 727 // as a pass in parameter, it indicates data in buffer that should move to sink
695 StreamResult Flow(StreamInterface* source, 728 StreamResult Flow(StreamInterface* source,
696 char* buffer, size_t buffer_len, 729 char* buffer, size_t buffer_len,
697 StreamInterface* sink, size_t* data_len = NULL); 730 StreamInterface* sink, size_t* data_len = NULL);
698 731
699 /////////////////////////////////////////////////////////////////////////////// 732 ///////////////////////////////////////////////////////////////////////////////
700 733
701 } // namespace rtc 734 } // namespace rtc
702 735
703 #endif // WEBRTC_BASE_STREAM_H_ 736 #endif // WEBRTC_BASE_STREAM_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698