/// <summary> /// Loads extensions from the configuration file /// </summary> /// <param name="id">Extension ID</param> /// <param name="logger">Logger</param> /// <exception cref="ExtensionException">Loading failure</exception> private void LoadExtension(string id, IEventWriter logger) { if (Extensions.ContainsKey(id)) { throw new ExtensionException(id, "Extension has been already loaded"); } var extensionsConfig = ServiceDescriptor.ExtensionsConfiguration; XmlElement configNode = (extensionsConfig != null) ? extensionsConfig.SelectSingleNode("extension[@id='" + id + "'][1]") as XmlElement : null; if (configNode == null) { throw new ExtensionException(id, "Cannot get the configuration entry"); } var descriptor = WinSWExtensionDescriptor.FromXml(configNode); if (descriptor.Enabled) { IWinSWExtension extension = CreateExtensionInstance(descriptor.Id, descriptor.ClassName); extension.Descriptor = descriptor; extension.Configure(ServiceDescriptor, configNode, logger); Extensions.Add(id, extension); logger.LogEvent("Extension loaded: " + id, EventLogEntryType.Information); } else { logger.LogEvent("Extension is disabled: " + id, EventLogEntryType.Warning); } }
private void HandleMappingError(SharedDirectoryMapperConfig config, IEventWriter eventWriter, MapperException ex) { String prefix = "Mapping of " + config.Label + " "; eventWriter.LogEvent(prefix + "STDOUT: " + ex.Process.StandardOutput.ReadToEnd(), EventLogEntryType.Information); eventWriter.LogEvent(prefix + "STDERR: " + ex.Process.StandardError.ReadToEnd(), EventLogEntryType.Information); throw new ExtensionException(Descriptor.Id, DisplayName + ": " + prefix + "failed", ex); }
public override void OnStart(IEventWriter eventWriter) { foreach (SharedDirectoryMapperConfig config in _entries) { if (config.EnableMapping) { eventWriter.LogEvent(DisplayName + ": Mapping shared directory " + config.UNCPath + " to " + config.Label, EventLogEntryType.Information); try { _mapper.MapDirectory(config.Label, config.UNCPath); } catch (MapperException ex) { HandleMappingError(config, eventWriter, ex); } } else { eventWriter.LogEvent(DisplayName + ": Mapping of " + config.Label + " is disabled", EventLogEntryType.Warning); } } }