yuzu/src/core/hle/service/time/time_manager.h
Morph 99ceb03a1c general: Convert source file copyright comments over to SPDX
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00

76 lines
2.5 KiB
C++

// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_types.h"
#include "core/file_sys/vfs_types.h"
#include "core/hle/service/time/clock_types.h"
#include "core/hle/service/time/standard_local_system_clock_core.h"
#include "core/hle/service/time/standard_network_system_clock_core.h"
#include "core/hle/service/time/standard_steady_clock_core.h"
#include "core/hle/service/time/standard_user_system_clock_core.h"
#include "core/hle/service/time/time_sharedmemory.h"
#include "core/hle/service/time/time_zone_content_manager.h"
namespace Service::Time {
namespace Clock {
class EphemeralNetworkSystemClockContextWriter;
class LocalSystemClockContextWriter;
class NetworkSystemClockContextWriter;
} // namespace Clock
// Parts of this implementation were based on Ryujinx (https://github.com/Ryujinx/Ryujinx/pull/783).
// This code was released under public domain.
class TimeManager final {
public:
explicit TimeManager(Core::System& system_);
~TimeManager();
void Initialize();
Clock::StandardSteadyClockCore& GetStandardSteadyClockCore();
const Clock::StandardSteadyClockCore& GetStandardSteadyClockCore() const;
Clock::StandardLocalSystemClockCore& GetStandardLocalSystemClockCore();
const Clock::StandardLocalSystemClockCore& GetStandardLocalSystemClockCore() const;
Clock::StandardNetworkSystemClockCore& GetStandardNetworkSystemClockCore();
const Clock::StandardNetworkSystemClockCore& GetStandardNetworkSystemClockCore() const;
Clock::StandardUserSystemClockCore& GetStandardUserSystemClockCore();
const Clock::StandardUserSystemClockCore& GetStandardUserSystemClockCore() const;
TimeZone::TimeZoneContentManager& GetTimeZoneContentManager();
const TimeZone::TimeZoneContentManager& GetTimeZoneContentManager() const;
void UpdateLocalSystemClockTime(s64 posix_time);
SharedMemory& GetSharedMemory();
const SharedMemory& GetSharedMemory() const;
void Shutdown();
void SetupTimeZoneManager(std::string location_name,
Clock::SteadyClockTimePoint time_zone_updated_time_point,
std::size_t total_location_name_count, u128 time_zone_rule_version,
FileSys::VirtualFile& vfs_file);
static s64 GetExternalTimeZoneOffset();
private:
Core::System& system;
struct Impl;
std::unique_ptr<Impl> impl;
};
} // namespace Service::Time