process.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * Copyright 2010-2023 Branimir Karadzic. All rights reserved.
  3. * License: https://github.com/bkaradzic/bx/blob/master/LICENSE
  4. */
  5. #ifndef BX_PROCESS_H_HEADER_GUARD
  6. #define BX_PROCESS_H_HEADER_GUARD
  7. #include "readerwriter.h"
  8. namespace bx
  9. {
  10. ///
  11. class ProcessReader
  12. : public ProcessOpenI
  13. , public CloserI
  14. , public ReaderI
  15. {
  16. public:
  17. ///
  18. ProcessReader();
  19. ///
  20. ~ProcessReader();
  21. ///
  22. virtual bool open(const FilePath& _filePath, const StringView& _args, Error* _err) override;
  23. ///
  24. virtual void close() override;
  25. ///
  26. virtual int32_t read(void* _data, int32_t _size, Error* _err) override;
  27. ///
  28. int32_t getExitCode() const;
  29. private:
  30. void* m_file;
  31. int32_t m_exitCode;
  32. };
  33. ///
  34. class ProcessWriter
  35. : public ProcessOpenI
  36. , public CloserI
  37. , public WriterI
  38. {
  39. public:
  40. ///
  41. ProcessWriter();
  42. ///
  43. ~ProcessWriter();
  44. ///
  45. virtual bool open(const FilePath& _filePath, const StringView& _args, Error* _err) override;
  46. ///
  47. virtual void close() override;
  48. ///
  49. virtual int32_t write(const void* _data, int32_t _size, Error* _err) override;
  50. ///
  51. int32_t getExitCode() const;
  52. private:
  53. void* m_file;
  54. int32_t m_exitCode;
  55. };
  56. } // namespace bx
  57. #endif // BX_PROCESS_H_HEADER_GUARD