DetachedBufferHandle.h revision 44addfe5d29023045784293459fab78a5899863b
196775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet/* 296775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * Copyright (C) 2018 The Android Open Source Project 396775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * 496775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * Licensed under the Apache License, Version 2.0 (the "License"); 596775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * you may not use this file except in compliance with the License. 696775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * You may obtain a copy of the License at 796775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * 896775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * http://www.apache.org/licenses/LICENSE-2.0 996775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * 1096775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * Unless required by applicable law or agreed to in writing, software 1196775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * distributed under the License is distributed on an "AS IS" BASIS, 1296775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1396775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * See the License for the specific language governing permissions and 1496775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet * limitations under the License. 1596775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet */ 1696775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet 173ced3cfd5b8f22b632c35f24e585c4847383b195David Gross#ifndef ANDROID_DETACHED_BUFFER_HUB_HANDLE_H 183ced3cfd5b8f22b632c35f24e585c4847383b195David Gross#define ANDROID_DETACHED_BUFFER_HUB_HANDLE_H 1996775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet 20033b8a6ce8ebd2a01ecccc6bae96d0fff8d4964eMichael Butler#include <pdx/channel_handle.h> 21707dbd2d55f5dacf78ffb3ad7c8b3f37c2e9d758Jean-Luc Brouillet 228b99bb1d98a42b67ba1c00e12c7abb3708cf7c05Jean-Luc Brouillet#include <memory> 2396811e2b1347889a25bd9686f47ca3cbf061fb1bDavid Gross 2496775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouilletnamespace android { 2596775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet 268b99bb1d98a42b67ba1c00e12c7abb3708cf7c05Jean-Luc Brouillet// A wrapper that holds a pdx::LocalChannelHandle object. From the handle, a BufferHub buffer can be 27707dbd2d55f5dacf78ffb3ad7c8b3f37c2e9d758Jean-Luc Brouillet// created. Current implementation assumes that the underlying transport is using libpdx (thus 28707dbd2d55f5dacf78ffb3ad7c8b3f37c2e9d758Jean-Luc Brouillet// holding a pdx::LocalChannelHandle object), but future implementation can change it to a Binder 29033b8a6ce8ebd2a01ecccc6bae96d0fff8d4964eMichael Butler// backend if ever needed. 30033b8a6ce8ebd2a01ecccc6bae96d0fff8d4964eMichael Butlerclass DetachedBufferHandle { 31689d892203c06c66c7bb2e374462a8434e40b75fMichael Butlerpublic: 3296775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet static std::unique_ptr<DetachedBufferHandle> Create(pdx::LocalChannelHandle handle) { 3396775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet return std::unique_ptr<DetachedBufferHandle>(new DetachedBufferHandle(std::move(handle))); 3496775128e3bcfdc5be51b62edc50309c83861fe8Jean-Luc Brouillet } 3583e24dc4706a5b7089881a55daf05b3924fab3b7David Gross 361f4381539b7e89c42336ee7cd1addb9a4c317b34David Gross // Accessors to get or take the internal pdx::LocalChannelHandle. 378b99bb1d98a42b67ba1c00e12c7abb3708cf7c05Jean-Luc Brouillet pdx::LocalChannelHandle& handle() { return mHandle; } 38707dbd2d55f5dacf78ffb3ad7c8b3f37c2e9d758Jean-Luc Brouillet const pdx::LocalChannelHandle& handle() const { return mHandle; } 39b26049114bc4c64e6bea3a5d5d129fcaec8e69b6David Gross 40aba8381570d7cc4b5431d741132d6f80519201ebMichael Butler // Returns whether the DetachedBufferHandle holds a BufferHub channel. 41707dbd2d55f5dacf78ffb3ad7c8b3f37c2e9d758Jean-Luc Brouillet bool isValid() const { return mHandle.valid(); } 428b99bb1d98a42b67ba1c00e12c7abb3708cf7c05Jean-Luc Brouillet 438b99bb1d98a42b67ba1c00e12c7abb3708cf7c05Jean-Luc Brouilletprivate: 4462cc2758c1c2d303861e209f26bddcf4d7564b73Jean-Luc Brouillet // Constructs a DetachedBufferHandle from a pdx::LocalChannelHandle. 4562cc2758c1c2d303861e209f26bddcf4d7564b73Jean-Luc Brouillet explicit DetachedBufferHandle(pdx::LocalChannelHandle handle) : mHandle(std::move(handle)) {} 468b99bb1d98a42b67ba1c00e12c7abb3708cf7c05Jean-Luc Brouillet 4762cc2758c1c2d303861e209f26bddcf4d7564b73Jean-Luc Brouillet pdx::LocalChannelHandle mHandle; 4862cc2758c1c2d303861e209f26bddcf4d7564b73Jean-Luc Brouillet}; 498b99bb1d98a42b67ba1c00e12c7abb3708cf7c05Jean-Luc Brouillet 508b99bb1d98a42b67ba1c00e12c7abb3708cf7c05Jean-Luc Brouillet} // namespace android 51c4c264098a728268ad28084ea6e0263d9c1d7868David Gross 5262cc2758c1c2d303861e209f26bddcf4d7564b73Jean-Luc Brouillet#endif // ANDROID_DETACHED_BUFFER_HUB_HANDLE_H 5362cc2758c1c2d303861e209f26bddcf4d7564b73Jean-Luc Brouillet