PageRenderTime 15ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/mordor/streams/cat.h

http://github.com/mozy/mordor
C Header | 37 lines | 26 code | 10 blank | 1 comment | 1 complexity | 42602f7d44af4696689770e25b7a9a3f MD5 | raw file
Possible License(s): BSD-3-Clause
  1. #ifndef __MORDOR_CAT_STREAM__
  2. #define __MORDOR_CAT_STREAM__
  3. // Copyright (c) 2009 - Mozy, Inc.
  4. #include <vector>
  5. #include "stream.h"
  6. namespace Mordor {
  7. class CatStream : public Stream
  8. {
  9. public:
  10. CatStream(const std::vector<Stream::ptr> &streams);
  11. bool supportsRead() { return true; }
  12. bool supportsSeek() { return m_seekable; }
  13. bool supportsTell() { return true; }
  14. bool supportsSize() { return m_size != -1ll; }
  15. using Stream::read;
  16. size_t read(Buffer &buffer, size_t length);
  17. long long seek(long long offset, Anchor anchor = BEGIN);
  18. long long size();
  19. private:
  20. std::vector<Stream::ptr> m_streams;
  21. std::vector<Stream::ptr>::iterator m_it;
  22. bool m_seekable;
  23. long long m_size;
  24. long long m_pos;
  25. };
  26. };
  27. #endif