1#ifndef ANDROID_PDX_CHANNEL_PARCELABLE_H_
2#define ANDROID_PDX_CHANNEL_PARCELABLE_H_
3
4#include <binder/Parcelable.h>
5#include <pdx/channel_handle.h>
6
7namespace android {
8namespace pdx {
9
10/**
11 * A parcelable object holds all necessary objects to recreate a ClientChannel.
12 * In addition to the android::Parcelable interface, this interface exposees
13 * more PDX-related interface.
14 */
15class ChannelParcelable : public Parcelable {
16 public:
17  virtual ~ChannelParcelable() = default;
18
19  // Returns whether the parcelable object holds a valid client channel.
20  virtual bool IsValid() const = 0;
21
22  // Returns a channel handle constructed from this parcelable object and takes
23  // the ownership of all resources from the parcelable object. In another word,
24  // the parcelable object will become invalid after TakeChannelHandle returns.
25  virtual LocalChannelHandle TakeChannelHandle() = 0;
26};
27
28}  // namespace pdx
29}  // namespace android
30
31#endif  // ANDROID_PDX_CHANNEL_PARCELABLE_H_
32