PageRenderTime 38ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/mordor/streams/limited.h

http://github.com/mozy/mordor
C Header | 44 lines | 32 code | 11 blank | 1 comment | 0 complexity | 526c6243c27b9ef2bb0e9f01b4ee0a94 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. #ifndef __MORDOR_LIMITED_STREAM_H__
  2. #define __MORDOR_LIMITED_STREAM_H__
  3. // Copyright (c) 2009 - Mozy, Inc.
  4. #include "filter.h"
  5. namespace Mordor {
  6. class LimitedStream : public MutatingFilterStream
  7. {
  8. public:
  9. typedef boost::shared_ptr<LimitedStream> ptr;
  10. public:
  11. LimitedStream(Stream::ptr parent, long long size, bool own = true);
  12. void reset() { m_pos = 0; }
  13. void reset(long long size) { m_pos = 0; m_size = size; }
  14. bool strict() { return m_strict; }
  15. void strict(bool strict) { m_strict = strict; }
  16. bool supportsSeek() { return parent()->supportsSeek(); }
  17. bool supportsTell() { return true; }
  18. bool supportsSize() { return true; }
  19. bool supportsTruncate() { return false; }
  20. using MutatingFilterStream::read;
  21. size_t read(Buffer &b, size_t len);
  22. using MutatingFilterStream::write;
  23. size_t write(const Buffer &b, size_t len);
  24. long long seek(long long offset, Anchor anchor = BEGIN);
  25. long long size();
  26. void truncate(long long size);
  27. void unread(const Buffer &b, size_t len);
  28. private:
  29. long long m_pos, m_size;
  30. bool m_strict;
  31. };
  32. }
  33. #endif