| #include <chrono> // NOLINT |
| #include <filesystem> // NOLINT |
| #include <iostream> |
| #include <limits> |
| #include <string> |
| #include <utility> |
| |
| #include "tlbmc/hal/shared_mem/segment_manager.h" |
| #include "tlbmc/hal/shared_mem/server.h" |
| |
| int main() { |
| boost::interprocess::shared_memory_object::remove("TlbmcSharedMemory"); |
| std::filesystem::remove(std::string{milotic_tlbmc::kShareMemInitializedFile}); |
| std::cout << "SharedMemoryServer starts \n"; |
| milotic_tlbmc::SharedMemoryServer::Initialize(); |
| |
| std::cout << "Get Sensor value: " |
| << milotic_tlbmc::SharedMemoryServer::GetInstance() |
| .ReadSensorValue("sensor001") |
| .value_or(std::make_pair( |
| std::numeric_limits<float>::infinity(), 0)) |
| .first |
| << '\n'; |
| std::chrono::high_resolution_clock::time_point start = |
| std::chrono::high_resolution_clock::now(); |
| constexpr int kIterations = 1000'000; |
| for (int i = 0; i < kIterations; ++i) { |
| milotic_tlbmc::SharedMemoryServer::GetInstance() |
| .ReadSensorValue("sensor001") |
| .IgnoreError(); |
| } |
| std::chrono::high_resolution_clock::time_point end = |
| std::chrono::high_resolution_clock::now(); |
| std::cout << "latency ns of one read:" |
| << static_cast<double>( |
| std::chrono::duration_cast<std::chrono::nanoseconds>(end - |
| start) |
| .count()) / |
| kIterations |
| << "\n"; |
| return 0; |
| } |