#pragma once

#include "ehs/EHS.h"
#include "BaseFileMonitor.h"

namespace ehs
{
	class EHS_LIB_IO FileMonitor final : public BaseFileMonitor
	{
	private:
		Handle hdl;
		FILETIME time;

	public:
		~FileMonitor() override;

		FileMonitor();

		FileMonitor(Str_8 filePath);

		FileMonitor(FileMonitor&& fm) noexcept;

		FileMonitor(const FileMonitor& fm);

		FileMonitor& operator=(FileMonitor&& fm) noexcept;

		FileMonitor& operator=(const FileMonitor& fm);

		void Initialize() override;

		void Release() override;

		UInt_8 Poll() override;

		bool IsInitialized() const override;
	};
}