PageRenderTime 1583ms CodeModel.GetById 1567ms RepoModel.GetById 0ms app.codeStats 0ms

/mordor/streams/fd.h

http://github.com/mozy/mordor
C Header | 58 lines | 44 code | 13 blank | 1 comment | 0 complexity | e376b95613fc22300b5455223d35d18a MD5 | raw file
Possible License(s): BSD-3-Clause
  1. #ifndef __MORDOR_FD_STREAM_H__
  2. #define __MORDOR_FD_STREAM_H__
  3. // Copyright (c) 2009 - Mozy, Inc.
  4. #include "stream.h"
  5. namespace Mordor {
  6. class IOManager;
  7. class Scheduler;
  8. class FDStream : public Stream
  9. {
  10. public:
  11. typedef boost::shared_ptr<FDStream> ptr;
  12. protected:
  13. FDStream();
  14. void init(int fd, IOManager *ioManager = NULL, Scheduler *scheduler = NULL,
  15. bool own = true);
  16. public:
  17. FDStream(int fd, IOManager *ioManager = NULL, Scheduler *scheduler = NULL,
  18. bool own = true)
  19. { init(fd, ioManager, scheduler, own); }
  20. ~FDStream();
  21. bool supportsRead() { return true; }
  22. bool supportsWrite() { return true; }
  23. bool supportsSeek() { return true; }
  24. bool supportsSize() { return true; }
  25. bool supportsTruncate() { return true; }
  26. void close(CloseType type = BOTH);
  27. size_t read(Buffer &buffer, size_t length);
  28. size_t read(void *buffer, size_t length);
  29. size_t write(const Buffer &buffer, size_t length);
  30. size_t write(const void *buffer, size_t length);
  31. long long seek(long long offset, Anchor anchor = BEGIN);
  32. long long size();
  33. void truncate(long long size);
  34. void flush(bool flushParent = true);
  35. int fd() { return m_fd; }
  36. private:
  37. IOManager *m_ioManager;
  38. Scheduler *m_scheduler;
  39. int m_fd;
  40. bool m_own;
  41. };
  42. typedef FDStream NativeStream;
  43. typedef int NativeHandle;
  44. }
  45. #endif