Add a LogManagerBase::Initialize IHttpClient parameter.

This commit is contained in:
Matt Koscumb 2019-04-24 15:12:52 -07:00
Родитель 89c7b1fa2d
Коммит ab0094c63b
1 изменённых файлов: 51 добавлений и 10 удалений

Просмотреть файл

@ -173,18 +173,61 @@ namespace ARIASDK_NS_BEGIN
}
/// <summary>
/// Initializes the telemetry logging system with default configuration.
/// Initializes the telemetry logging system with default configuraiton and HTTPClient.
/// </summary>
/// <returns>A logger instance instantiated with the default tenantToken.</returns>
static ILogger* Initialize()
{
return Initialize(std::string {});
}
/// <summary>
/// Initializes the telemetry logging system with the specified tenantToken.
/// </summary>
/// <param name="tenantToken">Token of the tenant with which the application is associated for collecting telemetry</param>
/// <returns>A logger instance instantiated with the tenantToken</returns>
/// <returns>A logger instance instantiated with the tenantToken.</returns>
inline static ILogger* Initialize(const std::string& tenantToken)
{
return Initialize(tenantToken, GetLogConfiguration());
}
/// <summary>
/// Initializes the telemetry logging system with the specified ILogConfiguration.
/// </summary>
/// <param name="tenantToken">Token of the tenant with which the application is associated for collecting telemetry</param>
/// <param name="configuration">ILogConfiguration to be used.</param>
/// <returns>A logger instance instantiated with the tenantToken.</returns>
inline static ILogger* Initialize(const std::string& tenantToken, ILogConfiguration& configuration)
{
return Initialize(tenantToken, configuration, nullptr);
}
/// <summary>
/// Initializes the telemetry logging system with the specified ILogConfiguration.
/// </summary>
/// <param name="tenantToken">Token of the tenant with which the application is associated for collecting telemetry</param>
/// <param name="httpClient">IHttpClient implementation to be used, nullptr uses the default</param>
/// <returns>A logger instance instantiated with the tenantToken.</returns>
inline static ILogger* Initialize(const std::string& tenantToken, IHttpClient* httpClient)
{
return Initialize(tenantToken, GetLogConfiguration(), httpClient);
}
/// <summary>
/// Initializes the telemetry logging system with the specified ILogConfiguration and IHttpClient.
/// </summary>
/// <param name="tenantToken">Token of the tenant with which the application is associated for collecting telemetry</param>
/// <param name="configuration">ILogConfiguration to be used.</param>
/// <param name="httpClient">IHttpClient implementation to be used, nullptr uses the default</param>
/// <returns>A logger instance instantiated with the tenantToken.</returns>
static ILogger* Initialize(
std::string tenantToken = "",
ILogConfiguration& configuration = GetLogConfiguration()
const std::string& tenantToken,
ILogConfiguration& configuration,
IHttpClient* httpClient
)
{
LM_LOCKGUARD(stateLock());
ILogConfiguration& currentConfig = GetLogConfiguration();
if (nullptr == instance)
{
// Copy alternate configuration into currentConfig
@ -196,18 +239,16 @@ namespace ARIASDK_NS_BEGIN
}
}
// Assume that if token isn't provided, then it's part of config
if (!tenantToken.empty())
{
currentConfig[CFG_STR_PRIMARY_TOKEN] = tenantToken.c_str();
}
else {
// Assume that if token isn't provided, then it's part of config
tenantToken = (const char *)currentConfig[CFG_STR_PRIMARY_TOKEN];
currentConfig[CFG_STR_PRIMARY_TOKEN] = tenantToken;
}
status_t status = STATUS_SUCCESS;
instance = LogManagerProvider::CreateLogManager(currentConfig, status);
instance->AttachEventSource(GetDebugEventSource());
return instance->GetLogger(currentConfig[CFG_STR_PRIMARY_TOKEN]);
}
else {
// TODO: [MG] - decide what to do if someone's doing re-Initialize.