private void ProcessAnswerCall(int lineNumber, bool isInternalCaller, bool enableAnswerDelay) { //if (!telecomProvider.IsLineInUse(lineNumber)) // return; if (!enableAnswerDelay || Properties.Settings.Default.AnswerTimeout == 0) { try { if (telecomProvider.IsLineInUse(lineNumber)) { telecomProvider.AnswerCall(lineNumber, isInternalCaller); } } catch (Exception e) { LoggingService.AddLogEntry(LogLevel.ErrorsOnly, Utils.ErrorUtils.FormatErrorString(e), true); } } else { if (Properties.Settings.Default.UseSleepForAnswerDelay) { try { System.Threading.Thread.Sleep(Properties.Settings.Default.AnswerTimeout); if (telecomProvider.IsLineInUse(lineNumber)) { telecomProvider.AnswerCall(lineNumber, isInternalCaller); } } catch (Exception e) { LoggingService.AddLogEntry(LogLevel.ErrorsOnly, Utils.ErrorUtils.FormatErrorString(e), true); } } else { AnswerTimeoutStruct ats = new AnswerTimeoutStruct(); ats.lineNumber = lineNumber; ats.telecomProvider = telecomProvider; ats.scriptService = this; ats.IsInternalCaller = isInternalCaller; ats.answerTimer = new System.Threading.Timer(new System.Threading.TimerCallback(ProcessAnswerTimeoutProc), ats, Properties.Settings.Default.AnswerTimeout, System.Threading.Timeout.Infinite); } } }
private static void ProcessAnswerTimeoutProc(object state) { AnswerTimeoutStruct ats = (AnswerTimeoutStruct)state; ats.answerTimer.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite); ats.answerTimer.Dispose(); try { ats.telecomProvider.AnswerCall(ats.lineNumber, ats.IsInternalCaller); } catch (Exception e) { LoggingService.AddLogEntry(LogLevel.ErrorsOnly, Utils.ErrorUtils.FormatErrorString(e), true); } }
private void ProcessAnswerCall(int lineNumber, bool isInternalCaller, bool enableAnswerDelay) { //if (!telecomProvider.IsLineInUse(lineNumber)) // return; if (!enableAnswerDelay || Properties.Settings.Default.AnswerTimeout == 0) { try { if (telecomProvider.IsLineInUse(lineNumber)) { telecomProvider.AnswerCall(lineNumber, isInternalCaller); } } catch(Exception e) { LoggingService.AddLogEntry(LogLevel.ErrorsOnly, Utils.ErrorUtils.FormatErrorString(e), true); } } else { if (Properties.Settings.Default.UseSleepForAnswerDelay) { try { System.Threading.Thread.Sleep(Properties.Settings.Default.AnswerTimeout); if (telecomProvider.IsLineInUse(lineNumber)) { telecomProvider.AnswerCall(lineNumber, isInternalCaller); } } catch (Exception e) { LoggingService.AddLogEntry(LogLevel.ErrorsOnly, Utils.ErrorUtils.FormatErrorString(e), true); } } else { AnswerTimeoutStruct ats = new AnswerTimeoutStruct(); ats.lineNumber = lineNumber; ats.telecomProvider = telecomProvider; ats.scriptService = this; ats.IsInternalCaller = isInternalCaller; ats.answerTimer = new System.Threading.Timer(new System.Threading.TimerCallback(ProcessAnswerTimeoutProc), ats, Properties.Settings.Default.AnswerTimeout, System.Threading.Timeout.Infinite); } } }