Exemplo n.º 1
0
        private VoiceSynthesizer generator; // генератор голоса.

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Создает провайдер, который генерирует голос.
        /// </summary>
        /// <param name="aGenerator">Генератор голоса.</param>
        public GeneratorSoundProvider(VoiceSynthesizer aGenerator)
        {
            if (aGenerator == null) {
                throw new ArgumentNullException("aGenerator");
            }

            generator = aGenerator;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Создает провайдер-карту фраз по ключу.
        /// </summary>
        /// <param name="aGenerator">Генератор голоса.</param>
        /// <param name="aXmlFile">Файл-карта.</param>
        public MapSoundProvider(VoiceSynthesizer aGenerator, string aXmlFile)
        {
            if (aGenerator == null) {
                throw new ArgumentNullException("aGenerator");
            }

            if (string.IsNullOrEmpty(aXmlFile)) {
                throw new ArgumentNullException("aXmlFile");
            }

            var filePath = aXmlFile;
            if (!Path.IsPathRooted(aXmlFile)) {
                filePath = Application.StartupPath + "\\" + aXmlFile;
            }

            generator = aGenerator;
            LoadFromXmlFile(filePath);
        }
Exemplo n.º 3
0
        /// <inheritdoc />
        protected override void DoInitialize()
        {
            try {
                Logger.Info("Инициализация...");

                Logger.Info("Имя файла конфигурации \"" + configurationFileName + "\"");
                Logger.Info("Загрузка конфигурации сервера...");
                configuration.LoadFromFile(configurationFileName);

                Logger.Info("Сетевой логин для клиентов: " + configuration.Login);
                Logger.Info("Обнаружено " + configuration.GetOutputDevicesCount() + " устройств вывода.");
                for (int i = 0; i < configuration.GetOutputDevicesCount(); i++) {
                    OutputDeviceInfo outputDevice = configuration.GetOutputDevice(i);
                    Logger.Info("Устройство \"" + outputDevice.GetName() + "\"");
                    Logger.Info("  Идентификатор = " + outputDevice.GetId());
                }
                Logger.Info("Обнаружено " + configuration.GetOutChannelsCount() + " каналов.");
                for (int j = 0; j < configuration.GetOutChannelsCount(); j++) {
                    OutChannelInfo channel = configuration.GetOutChannel(j);
                    Logger.Info("Канал \"" + channel.GetName() + "\"");
                    Logger.Info("  Идентификатор = " + channel.GetId());
                    Logger.Info("  Идентификатор устройства = " + channel.GetDevice().GetId());
                    Logger.Info("  Номер канала = " + channel.GetChannelNumber());
                    Logger.Info("  Идентификатор группы = " + channel.GetGroup().GetId());
                }
                Logger.Info("Обнаружено " + configuration.GetChannelGroupsCount() + " групп каналов.");
                Logger.Info("Обнаружено " + configuration.GetInputDevicesCount() + " устройств ввода.");
                for (var i = 0; i < configuration.GetInputDevicesCount(); ++i) {
                    var device = configuration.GetInputDevice(i);
                    Logger.Info("Устройство \"" + device.GetName() + "\"");
                    Logger.Info("  Идентификатор = " + device.GetId());
                }
                Logger.Info("Обнаружено " + configuration.GetInChannelsCount() + " каналов");
                for (var i = 0; i < configuration.GetInChannelsCount(); ++i) {
                    var channel = configuration.GetInChannel(i);
                    Logger.Info("Канал \"" + channel.GetName() + "\"");
                    Logger.Info("  Идентификатор = " + channel.GetId());
                    Logger.Info("  Идентификатор устройства = " + channel.GetDevice().GetId());
                    Logger.Info("  Номер канала = " + channel.GetChannelNumber());
                }

                Logger.Info("Загрузка конфигурации сервера завершена.");

                controlListener = new ControlListener();
                commandListener = new CommandListener(configuration.BitReverce);

                Logger.Info("Конфигурация менеджера каналов...");
                channelManager = new ChannelManagerImpl(configuration);
                channelManager.StartManage();
                Logger.Info("Конфигурация менеджера каналов завершена.");

                Logger.Info("Конфигурация генератора голоса...");
                var generatorConfig = configuration.voiceConfiguration;
                var generator = new VoiceSynthesizer(generatorConfig.Voice,
                                                        generatorConfig.Rate,
                                                        generatorConfig.SamplePerSecond);
                Logger.Info("Конфигурация генератора голоса завершена.");

                Logger.Info("Конфигурация источников голосовых сообщений...");
                var providers = new List<SoundProvider> {
                    new WaveFileSoundProvider(configuration.WavFilesFolder),
                    new MapSoundProvider(generator, configuration.MapSoundsFile),
                    new GeneratorSoundProvider(generator)
                };
                soundStorage = new SoundStorage(providers);
                Logger.Info("Конфигурация источников голосовых сообщений завершена.");

                Logger.Info("Конфигурация объявлений времени...");
                timeController = new TimeController();
                timeController.SetCallback(this);
                timeController.LoadFromXmlFile(configuration.TimeControllerFile);
                timeController.Initialize();
                Logger.Info("Конфигурация объявлений времени завершена.");

                controlListener.SetCallback(this);
                controlListener.GetListenEndPoint().Address = IPAddress.Any;
                controlListener.GetListenEndPoint().Port = 9998;

                commandListener.SetCallback(this);
                commandListener.GetListenEndPoint().Address = IPAddress.Any;
                commandListener.GetListenEndPoint().Port = 9999;

                controlListener.Initialize();
                commandListener.Initialize();

                Logger.Info("Инициализация завершена.");
            }
            catch (Exception ex) {
                Logger.Info("Загрузка конфигурации не выполнена: " + ex.Message);
                Process.GetCurrentProcess().Kill();
            }
        }