1 #ifndef ANDROID_PDX_MESSAGE_READER_H_
2 #define ANDROID_PDX_MESSAGE_READER_H_
3 
4 #include <memory>
5 
6 #include <pdx/channel_handle.h>
7 #include <pdx/file_handle.h>
8 
9 namespace android {
10 namespace pdx {
11 
12 class InputResourceMapper {
13  public:
14   virtual bool GetFileHandle(FileReference ref, LocalHandle* handle) = 0;
15   virtual bool GetChannelHandle(ChannelReference ref,
16                                 LocalChannelHandle* handle) = 0;
17 
18  protected:
19   virtual ~InputResourceMapper() = default;
20 };
21 
22 class MessageReader {
23  public:
24   // Pointers to start/end of the region in the read buffer.
25   using BufferSection = std::pair<const void*, const void*>;
26 
27   virtual BufferSection GetNextReadBufferSection() = 0;
28   virtual void ConsumeReadBufferSectionData(const void* new_start) = 0;
29   virtual InputResourceMapper* GetInputResourceMapper() = 0;
30 
31  protected:
32   virtual ~MessageReader() = default;
33 };
34 
35 }  // namespace pdx
36 }  // namespace android
37 
38 #endif  // ANDROID_PDX_MESSAGE_READER_H_
39