示例#1
0
        public static ExitCode Start(Settings settings)
        {
            try
            {
                StringBuilder startMessage = new StringBuilder();
                Ticks         startTime    = DateTime.UtcNow.Ticks;

                s_settings = settings ?? throw new ArgumentNullException(nameof(settings));

                startMessage.AppendLine();
                startMessage.AppendLine($"Establishing forward to InfluxDB HIDS \"{s_settings.InfluxDBEndPoint}\" from STTP data received from \"{s_settings.STTPEndPoint}\":");
                startMessage.AppendLine();
                startMessage.AppendLine($"   Current EXE Path: {FilePath.HostApplicationPath}");
                startMessage.AppendLine($"     Using Read Key: {s_settings.UseReadKey}");
                startMessage.AppendLine($"        Window Size: {s_settings.WindowSize:N0}ms");
                startMessage.AppendLine($"           Token ID: {s_settings.TokenID}");
                startMessage.AppendLine($"       Point Bucket: {s_settings.PointBucket}");
                startMessage.AppendLine($"    Organization ID: {s_settings.OrganizationID}");
                startMessage.AppendLine($"  Filter Expression: {s_settings.FilterExpression}");
                startMessage.AppendLine();
                startMessage.AppendLine($"Press any key to stop...");

                StatusMessage(startMessage.ToString());

                s_displayInterval = TimeSpan.FromMilliseconds(s_settings.WindowSize * 2).Ticks;

                using PointQueue pointQueue        = CreatePointQueue();
                using API hidsAPI                  = ConnectHIDSClient();
                using SubscriberHandler subscriber = ConnectSTTPClient();

                if (s_settings.UseReadKey)
                {
                    Console.ReadKey();
                }
                else
                {
                    Thread.Sleep(Timeout.Infinite);
                }

                subscriber.Disconnect();
                hidsAPI.Disconnect();

                StatusMessage($"Total process runtime: {(DateTime.UtcNow.Ticks - startTime).ToElapsedTimeString(3)}");
                return(ExitCode.Success);
            }
            catch (Exception ex)
            {
                ErrorMessage($"ERROR: {ex.Message}");
                return(ExitCode.Exception);
            }
        }
示例#2
0
        private static SubscriberHandler ConnectSTTPClient()
        {
            ValidateEndPoint(s_settings.STTPEndPoint, out string host, out ushort port);

            SubscriberHandler subscriberHandler = new SubscriberHandler
            {
                DisplayInterval           = s_displayInterval,
                HandleStatusMessage       = StatusMessage,
                HandleErrorMessage        = ErrorMessage,
                HandleReceivedMetadata    = HandleReceivedMetadata,
                HandleReceivedMeasurement = HandleReceivedMeasurement,
                FilterExpression          = s_settings.FilterExpression
            };

            subscriberHandler.Initialize(host, port);
            subscriberHandler.ConnectAsync();

            return(subscriberHandler);
        }