input_stream.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * This file is part of the FreeStreamer project,
  3. * (C)Copyright 2011-2018 Matias Muhonen <mmu@iki.fi> 穆马帝
  4. * See the file ''LICENSE'' for using the code.
  5. *
  6. * https://github.com/muhku/FreeStreamer
  7. */
  8. #ifndef ASTREAMER_INPUT_STREAM_H
  9. #define ASTREAMER_INPUT_STREAM_H
  10. #import "id3_parser.h"
  11. namespace astreamer {
  12. class Input_Stream_Delegate;
  13. struct Input_Stream_Position {
  14. UInt64 start;
  15. UInt64 end;
  16. };
  17. class Input_Stream : public ID3_Parser_Delegate {
  18. public:
  19. Input_Stream();
  20. virtual ~Input_Stream();
  21. Input_Stream_Delegate* m_delegate;
  22. virtual Input_Stream_Position position() = 0;
  23. virtual CFStringRef contentType() = 0;
  24. virtual size_t contentLength() = 0;
  25. virtual bool open() = 0;
  26. virtual bool open(const Input_Stream_Position& position) = 0;
  27. virtual void close() = 0;
  28. virtual void setScheduledInRunLoop(bool scheduledInRunLoop) = 0;
  29. virtual void setUrl(CFURLRef url) = 0;
  30. };
  31. class Input_Stream_Delegate {
  32. public:
  33. virtual void streamIsReadyRead() = 0;
  34. virtual void streamHasBytesAvailable(UInt8 *data, UInt32 numBytes) = 0;
  35. virtual void streamEndEncountered() = 0;
  36. virtual void streamErrorOccurred(CFStringRef errorDesc) = 0;
  37. virtual void streamMetaDataAvailable(std::map<CFStringRef,CFStringRef> metaData) = 0;
  38. virtual void streamMetaDataByteSizeAvailable(UInt32 sizeInBytes) = 0;
  39. };
  40. } // namespace astreamer
  41. #endif // ASTREAMER_INPUT_STREAM_H