#pragma once #include #include #include #include #include #include "hw/pcie.h" class YellowstoneServer { public: static glcr::ErrorOr> Create(); Thread RunServer(); Thread RunRegistration(); void ServerThread(); void RegistrationThread(); glcr::ErrorOr> GetServerClient(); private: glcr::UniquePtr server_; PortServer register_port_; static const uint64_t kBufferSize = 128; uint8_t server_buffer_[kBufferSize]; char registration_buffer_[kBufferSize]; // TODO: Store these in a data structure. z_cap_t denali_cap_ = 0; z_cap_t victoria_falls_cap_ = 0; PciReader pci_reader_; YellowstoneServer(glcr::UniquePtr server, PortServer port); };