private IRemoteMessage[] InvokeRemoteAnalyzer(IEnumerable <string> sourceFilePaths, IEnumerable <string> referencedAssemblyPaths)
        {
            TraceMessageHandler?.Invoke("Calling analyzer service.");

            var proxy  = (IRemoteDependencyAnalyzer)Activator.GetObject(typeof(IRemoteDependencyAnalyzer), _serviceAddress);
            var result = proxy.AnalyzeProject(ConfigProvider.Config, sourceFilePaths.ToArray(), referencedAssemblyPaths.ToArray());

            TraceMessageHandler?.Invoke("Calling analyzer service succeeded.");

            return(result);
        }
        private void ActivateServerAndWaitBeforeRetry(Exception e, int retryCount, TimeSpan[] retryTimeSpans)
        {
            TraceMessageHandler?.Invoke($"{CommunicationErrorMessage} Exception: {e.Message}");

            TraceMessageHandler?.Invoke($"Trying to activate analyzer service (attempt #{retryCount + 1}).");
            AnalyzerServiceActivator.Activate(TraceMessageHandler);

            var sleepTimeSpan = retryTimeSpans[retryCount];

            TraceMessageHandler?.Invoke($"Retrying service call after: {sleepTimeSpan}.");
            Thread.Sleep(sleepTimeSpan);
        }
Пример #3
0
        private IEnumerable <TypeDependency> GetIllegalTypeDependencies(Func <IEnumerable <TypeDependency> > typeDependencyEnumerator)
        {
            var illegalDependencies = typeDependencyEnumerator()
                                      .Where(i => !_typeDependencyValidator.IsAllowedDependency(i))
                                      .Take(_config.MaxIssueCount + 1);

            foreach (var illegalDependency in illegalDependencies)
            {
                yield return(illegalDependency);
            }

            TraceMessageHandler?.Invoke(GetCacheStatisticsMessage(_typeDependencyValidator));
        }
        private IEnumerable <TypeDependency> UnwrapTraceMessages(IRemoteMessage[] remoteMessages)
        {
            foreach (var remoteMessage in remoteMessages)
            {
                switch (remoteMessage)
                {
                case RemoteIllegalDependencyMessage illegalDependencyMessage:
                    yield return(illegalDependencyMessage.IllegalDependency);

                    break;

                case RemoteTraceMessage traceMessage:
                    TraceMessageHandler?.Invoke(traceMessage.Text);
                    break;

                default:
                    throw new Exception($"Unexpected IRemoteMessage type {remoteMessage?.GetType().Name}");
                }
            }
        }
Пример #5
0
 private void LogTraceMessage(string message) => TraceMessageHandler?.Invoke(message);
Пример #6
0
        public override async Task Run(IList <string> args)
        {
            if (args.Count != 1)
            {
                ShowUsage(exit: true);
            }

            if (!Uri.TryCreate(args[0], UriKind.Absolute, out Uri uri))
            {
                ShowError($"Invalid url: {args[0]}");
            }

            if (uri.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase))
            {
                if (string.IsNullOrWhiteSpace(_cert))
                {
                    ShowError($"Client Certificate (--cert) is required when using https");
                }
                if (!File.Exists(_cert))
                {
                    ShowError($"Not Found: {_cert}");
                }
            }

            if (string.IsNullOrWhiteSpace(_org))
            {
                ShowError($"Originator is required (--from)");
            }

            var hostUri = new Uri(uri.GetLeftPart(UriPartial.Authority));

            var handler = new HttpClientHandler
            {
                ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
            };

            if (_cert != null)
            {
                var certificate = AosUtils.LoadCertificate(_cert);
                handler.ClientCertificates.Add(certificate);
            }

            HttpClient client;

#if true //DEBUG
            var loggingHandler = new TraceMessageHandler(handler);
            client = new HttpClient(loggingHandler);
#else
            client = new HttpClient(handler);
#endif
            client.DefaultRequestHeaders.Add("Accept", Connection <Aetheros.Schema.OneM2M.PrimitiveContent> .OneM2MResponseContentType);

            var tasks = Enumerable.Range(0, _parallel).Select(i => {
                var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, uri);
                httpRequestMessage.Headers.Add("X-M2M-RI", _rqi ?? Guid.NewGuid().ToString("N"));
                httpRequestMessage.Headers.Add("X-M2M-Origin", _org);
                return(client.SendAsync(httpRequestMessage));
            });

            //var responses = await tasks.WhenAll();
            //var response = await client.SendAsync(httpRequestMessage);
            //response.EnsureSuccessStatusCode();

            foreach (var task in tasks)
            {
                var response = await task;
                Console.WriteLine("===========");
                var responseBody = await response.Content.ReadAsStringAsync();

                Console.WriteLine(responseBody);
            }
        }