コード例 #1
0
/// <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	
}
コード例 #2
0
/// <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);
        }
}