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); }
static void connectionTimeoutCallback(object sender, System.Timers.ElapsedEventArgs e) { RequestTimer timer = (RequestTimer)sender; timer.Enabled = false; timer.mRequest.Abort(); }
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; } }
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()); }
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(); }