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; }
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>(); } }