in src/Program.cs [470:533]
private int Run()
{
try
{
if (!m_args.Wamless)
{
if (ExtendedEnvironment.IsWindows)
{
var hWnd = ExtendedConsole.GetConsoleWindowHandle();
AadInteractiveTokenCredentialProviderBase.WAMWindowPointer = hWnd;
}
}
// Setup the connection string: if database name argument is specified explicitly, it overrides the one provided in the connection string
m_args.ConnectionString = WellKnownConnectionStrings.GetConnectionStringByAliasOrNull(m_args.ConnectionString) ?? m_args.ConnectionString;
m_kcsb = CreateKcsbFromArgs();
using (var adminClient = KustoClientFactory.CreateCslAdminProvider(m_kcsb))
{
m_targetServiceType = GetTargetServiceType(adminClient);
m_engineKcsb = string.Equals(m_targetServiceType, KustoIngestionConstants.EngineClusterServiceType, StringComparison.OrdinalIgnoreCase)
? m_kcsb
: GetEngineKcsb(adminClient);
}
m_dataFormat = ParseDataFormatFromArgs();
m_additionalProperties = ParseAdditionalPropertiesFromArgs();
m_tags = ParseTagsFromArgs();
m_additionalArguments = ParseAdditionalArgumentsFromArgs();
ValidateArgumentsCoherency();
// Generate ingestion properties to be used for this session
var ingestionProperties = CreateIngestionProperties();
// Initialize our ingestor
var ingestor = Ingestor.CreateFromCommandLineArgs(m_args, m_additionalArguments, ingestionProperties, m_logger);
// Iterations == 1 + Repetitions. Negative values indicate infinite loop
int iterations = (m_args.RepeatCount >= 0 ? m_args.RepeatCount + 1 : Int32.MaxValue);
for (int i = 1; i <= iterations; i++)
{
RunIngest(ingestor);
if (m_args.RepeatPauseInSeconds > 0 && i < iterations)
{
m_logger.LogInfo($"Pausing for {m_args.RepeatPauseInSeconds} seconds before next iteration");
Thread.Sleep(TimeSpan.FromSeconds(m_args.RepeatPauseInSeconds));
}
}
return 0;
}
catch (Exception ex)
{
m_logger.LogError(ex.Message);
return 2;
}
finally
{
TraceSourceManager.SuperFlush();
m_rollingCsvTraceListener2?.Dispose();
}
}