Пример #1
0
 public AgentLogPluginContext(
     string pluginNme,
     VssConnection connection,
     IList <Pipelines.TaskStepDefinitionReference> steps,
     IList <ServiceEndpoint> endpoints,
     IList <Pipelines.RepositoryResource> repositories,
     IDictionary <string, VariableValue> variables,
     IAgentLogPluginTrace trace)
 {
     _pluginName   = pluginNme;
     VssConnection = connection;
     Steps         = steps;
     Endpoints     = endpoints;
     Repositories  = repositories;
     Variables     = variables;
     _trace        = trace;
 }
Пример #2
0
        public AgentLogPluginHost(
            AgentLogPluginHostContext hostContext,
            List <IAgentLogPlugin> plugins,
            IAgentLogPluginTrace trace       = null,
            int shortCircuitThreshold        = 1000,  // output queue depth >= 1000 lines
            int shortCircuitMonitorFrequency = 10000) // check all output queues every 10 sec
        {
            _steps   = hostContext.Steps;
            _plugins = plugins;
            _trace   = trace ?? new AgentLogPluginTrace();
            _shortCircuitThreshold        = shortCircuitThreshold;
            _shortCircuitMonitorFrequency = shortCircuitMonitorFrequency;

            foreach (var plugin in _plugins)
            {
                string typeName = plugin.GetType().FullName;
                _outputQueue[typeName]    = new ConcurrentQueue <string>();
                _pluginContexts[typeName] = new AgentLogPluginContext(plugin.FriendlyName, hostContext.VssConnection, hostContext.Steps.Values.ToList(), hostContext.Endpoints, hostContext.Repositories, hostContext.Variables, _trace);
                _shortCircuited[typeName] = new TaskCompletionSource <int>();
            }
        }