internal void HookupHandler(IBuildProvider provider, ScriptScope moduleGlobals, object self, object target) { DynamicFunction scriptFunction = new DynamicFunction((object)moduleGlobals.GetVariable(_handlerName)); Delegate handler = EventHandlerWrapper.GetWrapper( provider, self, scriptFunction, _scriptVirtualPath, typeof(EventHandler)); _eventInfo.AddEventHandler(target, handler); }
public static Delegate GetWrapper(IBuildProvider provider, DynamicFunction f, string virtualPath, Type delegateType) { // Get the MethodInfo only once if (_handlerMethodInfo == null) { _handlerMethodInfo = typeof(EventHandlerWrapper).GetMethod("Handler"); } EventHandlerWrapper wrapper = new EventHandlerWrapper(provider, f, virtualPath); // Create a delegate of the required type return Delegate.CreateDelegate(delegateType, wrapper, _handlerMethodInfo); }
public Downloader(MainViewModel mainViewModel, IBuildProvider buildProvider, IMatchProvider matchProvider, ISoftwareProvider softwareProvider, IDownloadProvider downloadProvider, IDownloadService downloadService, IExtractService extractService, IMetadataService metadataService, ILogger <Downloader> logger) { Logger = logger; MainViewModel = mainViewModel; BuildProvider = buildProvider; MatchProvider = matchProvider; SoftwareProvider = softwareProvider; DownloadProvider = downloadProvider; DownloadService = downloadService; ExtractService = extractService; MetadataService = metadataService; }
private async Task <IEnumerable <IBuild> > PollBuildsAsync(IBuildProvider provider, BuildMonitorSettings settings) { try { if (this.generalSettings?.ViewStyle == BuildViewStyle.GroupByPullRequest) { var prBuilds = await provider.GetBuildsByPullRequestsAsync(settings).ConfigureAwait(false); prBuilds.ThrowIfUnsuccessful(); var definitionsInUse = prBuilds.Data.GroupBy(a => a.Definition, build => build, this.buildDefinitionEqualityComparer).Select(a => a.Key); var unusedDefinitions = settings.SelectedBuildDefinitions.Except(definitionsInUse, this.buildDefinitionEqualityComparer).ToList(); if (unusedDefinitions.Any()) { var defBuilds = await provider.GetBuildsAsync(settings.SelectedBuildDefinitions, settings).ConfigureAwait(false); defBuilds.ThrowIfUnsuccessful(); return(prBuilds.Data.Concat(defBuilds.Data)); } return(prBuilds.Data); } var builds = await provider.GetBuildsAsync(settings.SelectedBuildDefinitions, settings).ConfigureAwait(false); builds.ThrowIfUnsuccessful(); return(builds.Data); } catch (DataResponseUnsuccessfulException ex) { this.logger.Warn($"Http status code {ex.StatusCode} returned while polling for builds!"); this.notificationProvider?.ShowMessage("Failure on getting builds", $"Please check the connection for project(s) '{String.Join(", ", settings.SelectedBuildDefinitions.Select(b => b.Project.Name).Distinct())}'. StatusCode was '{ex.StatusCode}'. See log for more details."); } catch (Exception exception) { this.logger.Warn("Failure on polling builds", exception); this.notificationProvider?.ShowMessage("Failure on getting builds", $"Please check the connection for project(s) '{String.Join(", ", settings.SelectedBuildDefinitions.Select(b => b.Project.Name).Distinct())}'. See log for details."); } return(Enumerable.Empty <IBuild>()); }
public EventHandlerWrapper(IBuildProvider provider, DynamicFunction f, string virtualPath) { _f = f; _virtualPath = virtualPath; _provider = provider; }
public EventHandlerWrapper(IBuildProvider provider) { _provider = provider; }
internal void HookupEvents(IBuildProvider provider, ScriptScope moduleGlobals, object o) { if (_eventHandlers == null) return; foreach (EventHookupHelper helper in _eventHandlers) { helper.HookupHandler(provider, moduleGlobals, o, o); } }
public Project(IBuildProvider buildProvider, IBranchProvider branchProvider, IProjectConfiguration config) { BuildProvider = buildProvider; BranchProvider = branchProvider; Config = config; }
public Project(IBuildProvider buildProvider, IBranchProvider branchProvider, IProjectConfiguration config) : this(buildProvider.Yield(), branchProvider.Yield(), config) { }
private IBuildProvider GetProvider() { return(_provider ?? (_provider = _buildProviderStrategy.Create(Settings))); }
public BuildsController(IMapper mapper, IBuildProvider buildProvider, ILogger <BuildsController> logger) { _mapper = mapper ?? throw new ArgumentNullException(nameof(mapper)); _buildProvider = buildProvider ?? throw new ArgumentNullException(nameof(buildProvider)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
private IBuild Enrich(IBaseBuild build, IBuildProvider buildProvider) => new EnrichedBuild(build, Name, Guid, buildProvider);
public BuildCommandService(OmniSharpWorkspace workspace, IBuildProvider config) { _workspace = workspace; _config = config.config; }
internal static BuildResult GetBuildResult(string virtualPath, IBuildProvider buildProvider) { // If any script files in App_Scripts changed, they need to be reloaded ReloadChangedScriptFiles(); virtualPath = VirtualPathUtility.ToAbsolute(virtualPath); string cacheKey = virtualPath.ToLowerInvariant(); // Look up the cache before and after taking the lock BuildResult result = (BuildResult)HttpRuntime.Cache[cacheKey]; if (result != null) return result; ScriptEngine scriptEngine = buildProvider.GetScriptEngine(); lock (typeof(EngineHelper)) { result = (BuildResult)HttpRuntime.Cache[cacheKey]; if (result != null) return result; DateTime utcStart = DateTime.UtcNow; CompiledCode compiledCode = null; string scriptCode = buildProvider.GetScriptCode(); if (scriptCode != null) { // We pass the physical path for debugging purpose string physicalPath = HostingEnvironment.MapPath(virtualPath); ScriptSource source = scriptEngine.CreateScriptSourceFromString(scriptCode, physicalPath, SourceCodeKind.File); try { compiledCode = source.Compile(); } catch (SyntaxErrorException e) { EngineHelper.ThrowSyntaxErrorException(e); } } // Note that we cache the result even if there is no script, to avoid having to check // again later. result = buildProvider.CreateBuildResult(compiledCode, virtualPath); CacheDependency cacheDependency = HostingEnvironment.VirtualPathProvider.GetCacheDependency( virtualPath, new Util.SingleObjectCollection(virtualPath), utcStart); // Cache the result with a 5 minute sliding expiration HttpRuntime.Cache.Insert(cacheKey, result, cacheDependency, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5)); } return result; }