1#ifndef ANDROID_PDX_MESSAGE_WRITER_H_
2#define ANDROID_PDX_MESSAGE_WRITER_H_
3
4#include <pdx/channel_handle.h>
5#include <pdx/file_handle.h>
6#include <pdx/status.h>
7
8namespace android {
9namespace pdx {
10
11class OutputResourceMapper {
12 public:
13  virtual Status<FileReference> PushFileHandle(const LocalHandle& handle) = 0;
14  virtual Status<FileReference> PushFileHandle(
15      const BorrowedHandle& handle) = 0;
16  virtual Status<FileReference> PushFileHandle(const RemoteHandle& handle) = 0;
17  virtual Status<ChannelReference> PushChannelHandle(
18      const LocalChannelHandle& handle) = 0;
19  virtual Status<ChannelReference> PushChannelHandle(
20      const BorrowedChannelHandle& handle) = 0;
21  virtual Status<ChannelReference> PushChannelHandle(
22      const RemoteChannelHandle& handle) = 0;
23
24 protected:
25  virtual ~OutputResourceMapper() = default;
26};
27
28class MessageWriter {
29 public:
30  virtual void* GetNextWriteBufferSection(size_t size) = 0;
31  virtual OutputResourceMapper* GetOutputResourceMapper() = 0;
32
33 protected:
34  virtual ~MessageWriter() = default;
35};
36
37}  // namespace pdx
38}  // namespace android
39
40#endif  // ANDROID_PDX_MESSAGE_WRITER_H_
41