PageRenderTime 31ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/mordor/streams/transfer.h

http://github.com/mozy/mordor
C Header | 38 lines | 27 code | 7 blank | 4 comment | 0 complexity | c5a783ebe81d14caa600064514a1e014 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. #ifndef __MORDOR_TRANSFER_STREAM_H__
  2. #define __MORDOR_TRANSFER_STREAM_H__
  3. // Copyright (c) 2009 - Mozy, Inc.
  4. #include "stream.h"
  5. namespace Mordor {
  6. enum ExactLength
  7. {
  8. /// If toTransfer == ~0ull, use EOF, otherwise EXACT
  9. INFER,
  10. /// If toTransfer bytes can't be read, throw UnexpectedEofException
  11. EXACT,
  12. /// Transfer as many bytes as possible until EOF is hit
  13. UNTILEOF
  14. };
  15. unsigned long long transferStream(Stream &src, Stream &dst,
  16. unsigned long long toTransfer = ~0ull,
  17. ExactLength exactLength = INFER);
  18. inline unsigned long long transferStream(Stream::ptr src, Stream &dst,
  19. unsigned long long toTransfer = ~0ull,
  20. ExactLength exactLength = INFER)
  21. { return transferStream(*src.get(), dst, toTransfer, exactLength); }
  22. inline unsigned long long transferStream(Stream &src, Stream::ptr dst,
  23. unsigned long long toTransfer = ~0ull,
  24. ExactLength exactLength = INFER)
  25. { return transferStream(src, *dst.get(), toTransfer, exactLength); }
  26. inline unsigned long long transferStream(Stream::ptr src, Stream::ptr dst,
  27. unsigned long long toTransfer = ~0ull,
  28. ExactLength exactLength = INFER)
  29. { return transferStream(*src.get(), *dst.get(), toTransfer, exactLength); }
  30. }
  31. #endif