Example #1
0
        /// <summary>
        /// Отправляет сообщение в очередь указанного канала.
        /// </summary>
        /// <param name="aMessage">Сообщение.</param>
        /// <param name="aChannelId">Логический идентификатор канала.</param>
        public void ProcessMessage(SoundMessage aMessage, long aChannelId)
        {
            if (aMessage == null) {
                throw new ArgumentNullException("aMessage");
            }

            foreach (var channel in outChannels) {
                if (channel.GetChannelInfo().GetId() == aChannelId) {
                    if (channel.IsWorking()) {
                        channel.InsertMessage(aMessage);
                    }
                    else {
                        throw new ArgumentException(string.Format("Channel {0} is not working", aChannelId));
                    }

                    return;
                }
            }

            throw new ArgumentException(string.Format("Channel {0} was not found", aChannelId));
        }
Example #2
0
 /// <summary>
 /// Реагирует при получении команды от контроллера времени на объявление сообщения времени.
 /// </summary>
 /// <param name="aChannelIds">Идентификаторы выходных каналов для объявления сообщения времени.</param>
 /// <param name="aPriority">Приоритет сообщения.</param>
 /// <param name="aPrefixSound">Префикс для объявления времени.</param>
 /// <param name="aTimePhrase">Фраза для произношения.</param>
 public void OnTimeAnnounce(int[] aChannelIds, int aPriority, byte[] aPrefixSound, string aTimePhrase)
 {
     var timeSound = soundStorage.ProvideSound(new[] {aTimePhrase});
     var data = timeSound;
     if (aPrefixSound != null) {
         data = Enumerable.Concat(aPrefixSound, timeSound).ToArray();
     }
     var message = new SoundMessage(data, (uint) aPriority);
     foreach (var channelId in aChannelIds) {
         channelManager.ProcessMessage(message, channelId);
     }
 }
Example #3
0
 /// <summary>
 /// Реагирует при получении от клиента команды на воспроизменение звукового сообщения.
 /// </summary>
 /// <param name="aCommandSession">Сессия клиента, выполнившего команду.</param>
 /// <param name="aChannelIds">Идентификаторы выходных каналов для звукового сообщения.</param>
 /// <param name="aPriotity">Приоритет сообщения.</param>
 /// <param name="aFiles">Файлы для воспроизведения.</param>
 public void OnPlaySound(CommandSession aCommandSession, int[] aChannelIds, int aPriotity, string[] aFiles)
 {
     var data = soundStorage.ProvideSound(aFiles);
     var message = new SoundMessage(data, (uint) aPriotity);
     foreach (var channelId in aChannelIds) {
         channelManager.ProcessMessage(message, channelId);
     }
 }