|  | // Copyright 2016 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef PPAPI_SHAERD_IMPL_VPN_PROVIDER_UTIL_H_ | 
|  | #define PPAPI_SHAERD_IMPL_VPN_PROVIDER_UTIL_H_ | 
|  |  | 
|  | #include <memory> | 
|  |  | 
|  | #include "base/memory/shared_memory_mapping.h" | 
|  | #include "base/memory/unsafe_shared_memory_region.h" | 
|  | #include "ppapi/shared_impl/ppapi_shared_export.h" | 
|  |  | 
|  | namespace ppapi { | 
|  |  | 
|  | class PPAPI_SHARED_EXPORT VpnProviderSharedBuffer { | 
|  | public: | 
|  | VpnProviderSharedBuffer(uint32_t capacity, | 
|  | uint32_t packet_size, | 
|  | base::UnsafeSharedMemoryRegion shm, | 
|  | base::WritableSharedMemoryMapping mapping); | 
|  | ~VpnProviderSharedBuffer(); | 
|  |  | 
|  | bool GetAvailable(uint32_t* id); | 
|  | void SetAvailable(uint32_t id, bool value); | 
|  | void* GetBuffer(uint32_t id); | 
|  | uint32_t max_packet_size() { return max_packet_size_; } | 
|  | base::UnsafeSharedMemoryRegion DuplicateRegion() const; | 
|  |  | 
|  | private: | 
|  | uint32_t capacity_; | 
|  | uint32_t max_packet_size_; | 
|  | base::UnsafeSharedMemoryRegion shm_; | 
|  | base::WritableSharedMemoryMapping shm_mapping_; | 
|  | std::vector<bool> available_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(VpnProviderSharedBuffer); | 
|  | }; | 
|  |  | 
|  | }  // namespace ppapi | 
|  |  | 
|  | #endif  // PPAPI_SHAERD_IMPL_VPN_PROVIDER_UTIL_H_ |