/mordor/streams/std.h

http://github.com/mozy/mordor · C Header · 80 lines · 67 code · 12 blank · 1 comment · 0 complexity · 509a3d17908c8adba053c6bc388c6178 MD5 · raw file

  1. #ifndef __MORDOR_STD_STREAM_H__
  2. #define __MORDOR_STD_STREAM_H__
  3. // Copyright (c) 2009 - Mozy, Inc.
  4. #include "mordor/version.h"
  5. #ifdef WINDOWS
  6. #include "handle.h"
  7. #else
  8. #include "fd.h"
  9. #endif
  10. namespace Mordor {
  11. class StdStream : public NativeStream
  12. {
  13. protected:
  14. StdStream(IOManager *ioManager, Scheduler *scheduler, int stream);
  15. };
  16. class StdinStream : public StdStream
  17. {
  18. public:
  19. StdinStream()
  20. : StdStream(NULL, NULL, MORDOR_NATIVE(STD_INPUT_HANDLE, STDIN_FILENO))
  21. {}
  22. StdinStream(IOManager &ioManager)
  23. : StdStream(&ioManager, NULL, MORDOR_NATIVE(STD_INPUT_HANDLE, STDIN_FILENO))
  24. {}
  25. StdinStream(Scheduler &scheduler)
  26. : StdStream(NULL, &scheduler, MORDOR_NATIVE(STD_INPUT_HANDLE, STDIN_FILENO))
  27. {}
  28. StdinStream(IOManager &ioManager, Scheduler &scheduler)
  29. : StdStream(&ioManager, &scheduler, MORDOR_NATIVE(STD_INPUT_HANDLE, STDIN_FILENO))
  30. {}
  31. bool supportsWrite() { return false; }
  32. };
  33. class StdoutStream : public StdStream
  34. {
  35. public:
  36. StdoutStream()
  37. : StdStream(NULL, NULL, MORDOR_NATIVE(STD_OUTPUT_HANDLE, STDOUT_FILENO))
  38. {}
  39. StdoutStream(IOManager &ioManager)
  40. : StdStream(&ioManager, NULL, MORDOR_NATIVE(STD_OUTPUT_HANDLE, STDOUT_FILENO))
  41. {}
  42. StdoutStream(Scheduler &scheduler)
  43. : StdStream(NULL, &scheduler, MORDOR_NATIVE(STD_OUTPUT_HANDLE, STDOUT_FILENO))
  44. {}
  45. StdoutStream(IOManager &ioManager, Scheduler &scheduler)
  46. : StdStream(&ioManager, &scheduler, MORDOR_NATIVE(STD_OUTPUT_HANDLE, STDOUT_FILENO))
  47. {}
  48. bool supportsRead() { return false; }
  49. };
  50. class StderrStream : public StdStream
  51. {
  52. public:
  53. StderrStream()
  54. : StdStream(NULL, NULL, MORDOR_NATIVE(STD_ERROR_HANDLE, STDERR_FILENO))
  55. {}
  56. StderrStream(IOManager &ioManager)
  57. : StdStream(&ioManager, NULL, MORDOR_NATIVE(STD_ERROR_HANDLE, STDERR_FILENO))
  58. {}
  59. StderrStream(Scheduler &scheduler)
  60. : StdStream(NULL, &scheduler, MORDOR_NATIVE(STD_ERROR_HANDLE, STDERR_FILENO))
  61. {}
  62. StderrStream(IOManager &ioManager, Scheduler &scheduler)
  63. : StdStream(&ioManager, &scheduler, MORDOR_NATIVE(STD_ERROR_HANDLE, STDERR_FILENO))
  64. {}
  65. bool supportsRead() { return false; }
  66. };
  67. }
  68. #endif