/// <summary> /// Enqueues the specified context. /// </summary> /// <param name="context">The context.</param> /// <param name="telemetry">The telemetry.</param> void TelemetryChannel::Enqueue(TelemetryContext &context, Domain &telemetry) { Data data; data.SetBaseData(telemetry); data.SetBaseType(telemetry.GetBaseType()); std::wstring buffer; StringWriter content(&buffer); JsonWriter json(content); #ifdef WINAPI_FAMILY_PARTITION #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) // Windows phone or store //if (TraceLoggingProviderEnabled(g_hAppInsightsProvider, 0, 0)) if(false) { //Assumption: UTC is available json.WriteObjectValue(&data); auto partB = content.ToString(); TraceLoggingWrite( g_hAppInsightsProvider, "Part B data", TraceLoggingKeyword(MICROSOFT_KEYWORD_TELEMETRY), TraceLoggingWideString(partB.c_str())); } else { #endif #endif Envelope envelope; envelope.SetData(data); envelope.SetIKey(m_config->GetIKey()); envelope.SetTime(Utils::GetCurrentDateTime()); envelope.SetName(telemetry.GetEnvelopeName()); envelope.SetSeq(std::to_wstring(m_channelId) + L":" + std::to_wstring(m_seqNum++)); wstring_wstring_map tags; context.GetContextTags(tags); envelope.SetTags(tags); json.WriteObjectValue(&envelope); m_buffer.push_back(content.ToString()); if ((int)m_buffer.size() >= m_maxBufferSize) { Send(); } if (context.GetSession().GetIsNew().HasValue() && context.GetSession().GetIsNew().GetValue() == L"True") { Nullable<std::wstring> strFalse = std::wstring(L"False"); context.GetSession().SetIsFirst(strFalse); context.GetSession().SetIsNew(strFalse); } #ifdef WINAPI_FAMILY_PARTITION #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) // Windows phone or store } #endif #endif }
/// <summary> /// Enqueues the specified context. /// </summary> /// <param name="context">The context.</param> /// <param name="telemetry">The telemetry.</param> void TelemetryChannel::Enqueue(TelemetryContext &context, Domain &telemetry) { Data data; data.SetBaseData(telemetry); data.SetBaseType(telemetry.GetBaseType()); std::wstring buffer; StringWriter content(&buffer); JsonWriter json(content); Envelope envelope; envelope.SetData(data); envelope.SetIKey(m_config->GetIKey()); envelope.SetTime(Utils::GetCurrentDateTime()); envelope.SetName(telemetry.GetEnvelopeName()); envelope.SetSeq(std::to_wstring(m_channelId) + L":" + std::to_wstring(m_seqNum++)); wstring_wstring_map tags; context.GetContextTags(tags); envelope.SetTags(tags); json.WriteObjectValue(&envelope); m_buffer.push_back(content.ToString()); if ((int)m_buffer.size() >= m_maxBufferSize) { Send(); } if (context.GetSession().GetIsNew().HasValue() && context.GetSession().GetIsNew().GetValue() == L"True") { Nullable<std::wstring> strFalse = std::wstring(L"False"); context.GetSession().SetIsFirst(strFalse); context.GetSession().SetIsNew(strFalse); } }