// 构造函数 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; } }
/// <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; } }
/// <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) { }
protected virtual void Dispose(bool disposing) { if (!disposed) { if (disposing) { if (confResource != null && confResource.Confgroup != -1) UnLink(); driver = null; } disposed = true; } }