// 构造函数
        public CallDispatcher(Type serviceType, Type baseType, ICTIDriver driver)
            : base(serviceType, baseType)
        {
            Guard.ArgumentNotNull(driver, "driver");

            this.driver = driver;
        }
        // ���캯��
        public CallDispatcher(Type serviceType, Type baseType, ICTIDriver driver)
            : base(serviceType, baseType)
        {
            Guard.ArgumentNotNull(driver, "driver");

            this.driver = driver;
        }
        /// <summary>
        /// 抽象通道构造函数
        /// </summary>
        /// <param name="driver">板卡适配器</param>
        /// <param name="channelID">通道编号</param>
        public AbstractChannel(ICTIDriver driver, int channelID)
        {
            // 初始化日志组件
            logger = driver.WorkItem.Services.Get <ILog>();

            this.channelID = channelID;
            this.driver    = driver;
            scriptLoaders  = new Dictionary <string, List <IScriptLoader> >();
            CurrentStatus  = ChannelStatus.INIT;
        }
        /// <summary>
        /// ����ͨ�����캯��
        /// </summary>
        /// <param name="driver">�忨������</param>
        /// <param name="channelID">ͨ�����</param>
        public AbstractChannel(ICTIDriver driver, int channelID)
        {
            // ��ʼ����־���
            logger = driver.WorkItem.Services.Get<ILog>();

            this.channelID = channelID;
            this.driver = driver;
            scriptLoaders = new Dictionary<string, List<IScriptLoader>>();
            CurrentStatus = ChannelStatus.INIT;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DB160XChannel"/> class.
        /// </summary>
        /// <param name="driver">�忨������</param>
        /// <param name="channelID">ͨ�����</param>
        public DB160XChannel(ICTIDriver driver, int channelID)
            : base(driver, channelID)
        {
            #region ���ͨ������

            ChannelType[] types = {ChannelType.USER, ChannelType.TRUNK, ChannelType.EMPTY, ChannelType.RECORD,
                ChannelType.VIRTUAL};
            int chnltype = D160X.CheckChType(channelID);
            ChannelType = chnltype >= 0 && chnltype <= 4 ? types[chnltype] : ChannelType.EMPTY;

            #endregion

            CurrentStatus = ChannelType == ChannelType.EMPTY ? ChannelStatus.RELEASE : ChannelStatus.IDLE;
        }
        protected virtual void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing)
                {
                    if (confResource != null && confResource.Confgroup != -1)
                    {
                        UnLink();
                    }

                    driver = null;
                }
                disposed = true;
            }
        }
Exemple #7
0
        /// <summary>
        /// Releases unmanaged and - optionally - managed resources
        /// </summary>
        /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        protected virtual void Dispose(bool disposing)
        {
            if (!disposed)
            {
                ICTIDriver driver = workItem.Services.Get <ICTIDriver>();
                if (driver != null)
                {
                    // 从通道中去除TTS功能
                    for (short i = 0; i < driver.ChannelCount; i++)
                    {
                        if (driver.Channels[i].ChannelType == ChannelType.TRUNK)
                        {
                            TTS3.DelTTSFromChannel(i);
                        }
                    }
                }

                TTS3.DJTTS3_Release();
                disposed = true;
            }
        }
Exemple #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DJTTS3Engine"/> class.
        /// </summary>
        /// <param name="workItem">The work item.</param>
        /// <param name="threadNumber">The thread number.</param>
        public DJTTS3Engine(WorkItem workItem, Int32 threadNumber)
            : base(workItem, threadNumber)
        {
            ICTIDriver driver = workItem.Items.Get <ICTIDriver>("DB160X"); // 通过适配器名字获取其依赖的对象

            if (driver == null)
            {
                Logger.Fatal("没有初始化正确的板卡适配器,此TTS需要与东进的语音卡配合使用");
                throw new Exception("东进TTS必须依赖于其自身的板卡,请检查配置文件后再试。");
            }

            bool driverStatus = driver.Active;

            Logger.Info("准备初始化东进TTS引擎……");
            try
            {
                canWork       = false;
                driver.Active = true;
                Int32 initSucess = TTS3.DJTTS3_Init();
                if (initSucess > 0)
                {
                    ttsChannelCount = TTS3.DJTTS3_GetTotalTTSChannel();
                    Int32 j = 0;
                    for (short i = 0; i < driver.ChannelCount; i++)
                    {
                        // 只对外线通道附加TTS功能
                        if (driver.Channels[i].ChannelType == ChannelType.TRUNK)
                        {
                            try
                            {
                                TTS3.DJTTS3_AddTTSToChannel(i);
                                Logger.Info("为 " + driver.VersionInfo.Name + " 的第 " + i.ToString() + " 条外线添加TTS功能,成功");
                                // 检查是否使用完可用的TTS通道数
                                j++;
                                if (j == ttsChannelCount)
                                {
                                    break;
                                }
                            }
                            catch
                            {
                                Logger.Error("为 " + driver.VersionInfo.Name + " 的第 " + i.ToString() + " 条外线添加TTS功能,失败");
                                continue;
                            }
                        }
                    }
                    canWork = true;
                    Logger.Info("完成东进TTS引擎初始化工作");
                }
                else
                {
                    Logger.Info("初始化东进TTS引擎失败,错误代码为: " + initSucess.ToString());
                }
            }
            catch (Exception ex)
            {
                Logger.Error("初始化东进TTS引擎时发生错误", ex);
            }
            finally
            {
                driver.Active = driverStatus;
            }
        }
 public ChannelWrapper(WorkItem workItem, ICTIDriver driver, int channelID)
     : base(driver, channelID)
 {
 }
 public ChannelWrapper(WorkItem workItem, ICTIDriver driver, int channelID)
     : base(driver, channelID)
 {
 }
        protected virtual void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing)
                {
                    if (confResource != null && confResource.Confgroup != -1)
                        UnLink();

                    driver = null;
                }
                disposed = true;
            }
        }