public CancellationToken Start(IServiceManager services, JsonRpc rpc)
        {
            _server   = new Server(services);
            _services = services;
            _rpc      = rpc;

            _jsonSerializer  = services.GetService <JsonSerializer>();
            _idleTimeTracker = services.GetService <IIdleTimeTracker>();
            _logger          = services.GetService <ILogger>();
            _telemetry       = services.GetService <ITelemetryService>();
            _requestTimer    = new RequestTimer(_telemetry);

            var rpcTraceListener = new TelemetryRpcTraceListener(_telemetry);

            _rpc.TraceSource.Listeners.Add(rpcTraceListener);

            _disposables
            .Add(() => _shutdownCts.Cancel())
            .Add(_prioritizer)
            .Add(() => _pathsWatcher?.Dispose())
            .Add(() => _rpc.TraceSource.Listeners.Remove(rpcTraceListener));

            services.AddService(_optionsProvider);
            return(_sessionTokenSource.Token);
        }
Beispiel #2
0
        static void connectionTimeoutCallback(object sender, System.Timers.ElapsedEventArgs e)
        {
            RequestTimer timer = (RequestTimer)sender;

            timer.Enabled = false;

            timer.mRequest.Abort();
        }
Beispiel #3
0
        public static string HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc, int connectionTimeout, int responseTimeout)
        {
            var         boundary      = "---------------------------" + DateTime.Now.Ticks.ToString("x");
            var         boundarybytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
            WebResponse wresp         = null;
            var         wr            = (HttpWebRequest)WebRequest.Create(url);

            wr.ContentType = "multipart/form-data; boundary=" + boundary;
            wr.Method      = "POST";
            wr.KeepAlive   = true;
            wr.Credentials = CredentialCache.DefaultCredentials;
            wr.Timeout     = responseTimeout;
            try
            {
                RequestTimer timer = new RequestTimer(connectionTimeout, wr);
                timer.Elapsed += connectionTimeoutCallback;
                timer.Enabled  = true;

                //Trust all certificates
                System.Net.ServicePointManager.ServerCertificateValidationCallback =
                    ((sender, certificate, chain, sslPolicyErrors) => true);

                var rs = wr.GetRequestStream();
                timer.Enabled = false;

                const string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\nContent-Type: application/json\r\n\r\n{1}";
                foreach (string key in nvc.Keys)
                {
                    rs.Write(boundarybytes, 0, boundarybytes.Length);
                    var    formitem      = string.Format(formdataTemplate, key, nvc[key]);
                    byte[] formitembytes = Encoding.UTF8.GetBytes(formitem);
                    rs.Write(formitembytes, 0, formitembytes.Length);
                }
                rs.Write(boundarybytes, 0, boundarybytes.Length);

                const string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
                var          header         = string.Format(headerTemplate, paramName, file, contentType);
                var          headerbytes    = Encoding.UTF8.GetBytes(header);
                rs.Write(headerbytes, 0, headerbytes.Length);

                var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
                var buffer     = new byte[4096];
                var bytesRead  = 0;
                while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                {
                    rs.Write(buffer, 0, bytesRead);
                }
                fileStream.Close();

                var trailer = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
                rs.Write(trailer, 0, trailer.Length);
                rs.Close();



                wresp = wr.GetResponse();
                var stream2 = wresp.GetResponseStream();
                var reader2 = new StreamReader(stream2);
                return(reader2.ReadToEnd());
            }
            catch (Exception ex)
            {
                if (wresp != null)
                {
                    wresp.Close();
                    wresp = null;
                }
                throw ex;
            }
            finally
            {
                wr = null;
            }
        }
Beispiel #4
0
        public void Register(IAppHost appHost)
        {
            appHost.PreRequestFilters.Insert(0, (request, response) =>
            {
                _requestsMeter.Mark();
                ((HttpRequestBase)request.OriginalRequest).RequestContext.HttpContext.Items.Add("_metrics_timer", RequestTimer.Start(_requestsTimer, _requestsConcurrent));
            });

            appHost.ServiceExceptionHandlers.Add((req, request, exception) =>
            {
                _errorsMeter.Mark();
                return(null);
            });
            appHost.UncaughtExceptionHandlers.Add((req, res, name, exception) => _errorsMeter.Mark());
        }
Beispiel #5
0
        public static async Task StartBuildAsync(
            EnvDTE.Project project,
            string projectPath,
            string configName,
            Dictionary <string, string> properties,
            IEnumerable <string> targets,
            LoggerVerbosity verbosity)
        {
            if (project == null)
            {
                throw new ArgumentException("Project cannot be null.");
            }
            if (configName == null)
            {
                throw new ArgumentException("Configuration name cannot be null.");
            }

            RequestTimer.Restart();
            var tracker = QtProjectTracker.Get(project, projectPath);
            await tracker.Initialized;

            if (QtVsToolsPackage.Instance.Options.BuildDebugInformation)
            {
                Messages.Print(string.Format(
                                   "{0:HH:mm:ss.FFF} QtProjectBuild({1}): Request [{2}] {3}",
                                   DateTime.Now, Thread.CurrentThread.ManagedThreadId,
                                   configName, tracker.UnconfiguredProject.FullPath));
            }

            var knownConfigs = await tracker.UnconfiguredProject.Services
                               .ProjectConfigurationsService.GetKnownProjectConfigurationsAsync();

            ConfiguredProject configuredProject = null;

            foreach (var config in knownConfigs)
            {
                var configProject = await tracker.UnconfiguredProject
                                    .LoadConfiguredProjectAsync(config);

                if (configProject.ProjectConfiguration.Name == configName)
                {
                    configuredProject = configProject;
                    break;
                }
            }
            if (configuredProject == null)
            {
                throw new ArgumentException(string.Format("Unknown configuration '{0}'.", configName));
            }

            BuildQueue.Enqueue(new QtProjectBuild()
            {
                Project             = project,
                VcProject           = tracker.VcProject,
                UnconfiguredProject = tracker.UnconfiguredProject,
                ConfiguredProject   = configuredProject,
                Properties          = properties?.ToDictionary(x => x.Key, x => x.Value),
                Targets             = targets?.ToList(),
                LoggerVerbosity     = verbosity
            });
            StaticThreadSafeInit(() => BuildDispatcher,
                                 () => BuildDispatcher = Task.Run(BuildDispatcherLoopAsync))
            .Forget();
        }