1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef SERVICES_DEVICE_PUBLIC_CPP_GENERIC_SENSOR_SENSOR_READING_SHARED_BUFFER_READER_H_ 6 #define SERVICES_DEVICE_PUBLIC_CPP_GENERIC_SENSOR_SENSOR_READING_SHARED_BUFFER_READER_H_ 7 8 #include <memory> 9 10 #include "base/macros.h" 11 #include "mojo/public/cpp/system/buffer.h" 12 13 namespace device { 14 15 union SensorReading; 16 struct SensorReadingSharedBuffer; 17 18 class SensorReadingSharedBufferReader { 19 public: 20 // Creates a new SensorReadingSharedBufferReader instance that reads 21 // sensor readings from the shared buffer. 22 static std::unique_ptr<SensorReadingSharedBufferReader> Create( 23 mojo::ScopedSharedBufferHandle reading_buffer_handle, 24 uint64_t reading_buffer_offset); 25 26 ~SensorReadingSharedBufferReader(); 27 28 // Get sensor reading from shared buffer. 29 bool GetReading(SensorReading* result); 30 static bool GetReading(const SensorReadingSharedBuffer* buffer, 31 SensorReading* result); 32 33 private: 34 explicit SensorReadingSharedBufferReader( 35 mojo::ScopedSharedBufferHandle shared_buffer_handle, 36 mojo::ScopedSharedBufferMapping shared_buffer); 37 38 static bool TryReadFromBuffer(const SensorReadingSharedBuffer* buffer, 39 SensorReading* result); 40 41 mojo::ScopedSharedBufferHandle shared_buffer_handle_; 42 mojo::ScopedSharedBufferMapping shared_buffer_; 43 44 DISALLOW_COPY_AND_ASSIGN(SensorReadingSharedBufferReader); 45 }; 46 47 } // namespace device 48 49 #endif // SERVICES_DEVICE_PUBLIC_CPP_GENERIC_SENSOR_SENSOR_READING_SHARED_BUFFER_READER_H_ 50