#ifndef OpenTestSystem_OtxDiagManager_Common_ILogConfig_H
#define OpenTestSystem_OtxDiagManager_Common_ILogConfig_H

#include "CommonDefs.h"

#include <string>
#include <map>

#include "ILog.h"

namespace OpenTestSystem
{
	namespace OtxDiagManager
	{
		namespace Common
		{
			/// <summary>
			/// DiagManager logger configuration
			/// </summary>
			class COMMON_EXPORTS ILogConfig
			{
			protected:
				ILogConfig();

			public:
				virtual ~ILogConfig();
				/// <summary>
				/// Gets the log level of a given module
				/// </summary>
				/// <returns>Log level of the given module</returns>
				virtual ILog::Level GetLevel(const std::string& module) = 0;
				/// <summary>
				/// Sets the log level of a given module
				/// </summary>
				/// <param name="module">Name of the related module, e.g. 'VwMcd90DiagRuntimeSystem'</param>
				/// <param name="level">Log level</param>
				virtual void SetLevel(const std::string& module, ILog::Level level) = 0;

				virtual long GetRevision();
				virtual void SetRevision(long revision);
				long IncrementRevision();

			private:
				long _revision;
			};
		}
	}
}
#endif // OpenTestSystem_OtxDiagManager_Common_ILogConfig_H
