in snipinsights/windows/SnipInsight/Util/LogUploader.cs [113:187]
async void Send(DateTime sendTime)
{
try
{
if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
// Queue for retry
Queue(DateTime.UtcNow + TimeSpan.FromMilliseconds(_uploadPeriod));
if (_failureCallback != null)
{
_failureCallback();
}
return;
}
DateTime contentTime = DateTime.MinValue;
string uploadContent = _retrieveContent(ref contentTime);
if (!string.IsNullOrEmpty(uploadContent))
{
uploadContent = Compress(uploadContent);
using (StringContent payload = new StringContent(uploadContent))
{
using (HttpClient client = new HttpClient())
{
// Build the POST request
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, _url);
request.Headers.Add("X-MS-SnipInsight", "WqCK64ev30QAPKSoLUIEig4s9QJoJqYwzGDMXOrmS7CU3iHrHqZhosksf34QAu==");
request.Content = payload;
request.Content.Headers.ContentEncoding.Add("gzip");
HttpResponseMessage response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
{
lock (_lock)
{
_lastSent = sendTime > contentTime ? sendTime : contentTime;
if (_successCallback != null)
{
_successCallback();
}
}
}
else
{
// Queue for retry
Queue(DateTime.UtcNow + TimeSpan.FromMilliseconds(_uploadPeriod));
if (_failureCallback != null)
{
_failureCallback();
}
}
}
}
}
}
catch (Exception ex)
{
if (ex is HttpRequestException)
{
// SendAsync may have thrown, queue for retry
Queue(DateTime.UtcNow + TimeSpan.FromMilliseconds(_uploadPeriod));
}
Diagnostics.LogException(ex);
if (_failureCallback != null)
{
_failureCallback();
}
}
finally
{
lock (_lock)
{
_sending = false;
}
}
}