From de6326bda9ffba58ca018a9be85a91c22bb529d5 Mon Sep 17 00:00:00 2001 From: orastarter Date: Mon, 24 Sep 2018 09:30:48 +0300 Subject: [PATCH] Fix https://github.com/AsterNET/AsterNET/issues/120 --- .../Asterisk.NET/FastAGI/AGIChannel.cs | 12 +- .../Asterisk.NET/FastAGI/AGIScript.cs | 120 +++++++++--------- 2 files changed, 61 insertions(+), 71 deletions(-) diff --git a/Asterisk.2013/Asterisk.NET/FastAGI/AGIChannel.cs b/Asterisk.2013/Asterisk.NET/FastAGI/AGIChannel.cs index c439272..54ed7e7 100644 --- a/Asterisk.2013/Asterisk.NET/FastAGI/AGIChannel.cs +++ b/Asterisk.2013/Asterisk.NET/FastAGI/AGIChannel.cs @@ -12,8 +12,6 @@ namespace AsterNET.FastAGI private readonly bool _SCHANGUP_CAUSES_EXCEPTION; private readonly AGIReader agiReader; private readonly AGIWriter agiWriter; - private AGIReply agiReply; - public AGIChannel(SocketConnection socket, bool SC511_CAUSES_EXCEPTION, bool SCHANGUP_CAUSES_EXCEPTION) { @@ -34,18 +32,10 @@ namespace AsterNET.FastAGI _SCHANGUP_CAUSES_EXCEPTION = SCHANGUP_CAUSES_EXCEPTION; } - /// - /// Get last AGI Reply. - /// - public AGIReply LastReply - { - get { return agiReply; } - } - public AGIReply SendCommand(AGICommand command) { agiWriter.SendCommand(command); - agiReply = agiReader.ReadReply(); + AGIReply agiReply = agiReader.ReadReply(); int status = agiReply.GetStatus(); if (status == (int) AGIReplyStatuses.SC_INVALID_OR_UNKNOWN_COMMAND) throw new InvalidOrUnknownCommandException(command.BuildCommand()); diff --git a/Asterisk.2013/Asterisk.NET/FastAGI/AGIScript.cs b/Asterisk.2013/Asterisk.NET/FastAGI/AGIScript.cs index f1bbc4f..6f76111 100644 --- a/Asterisk.2013/Asterisk.NET/FastAGI/AGIScript.cs +++ b/Asterisk.2013/Asterisk.NET/FastAGI/AGIScript.cs @@ -102,8 +102,8 @@ namespace AsterNET.FastAGI protected internal int GetChannelStatus() { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.ChannelStatusCommand()); - return channel.LastReply.ResultCode; + AGIReply lastReply = channel.SendCommand(new Command.ChannelStatusCommand()); + return lastReply.ResultCode; } #endregion @@ -118,8 +118,8 @@ namespace AsterNET.FastAGI protected internal string GetData(string file) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.GetDataCommand(file)); - return channel.LastReply.GetResult(); + AGIReply lastReply = channel.SendCommand(new Command.GetDataCommand(file)); + return lastReply.GetResult(); } #endregion @@ -137,8 +137,8 @@ namespace AsterNET.FastAGI protected internal string GetData(string file, long timeout) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.GetDataCommand(file, timeout)); - return channel.LastReply.GetResult(); + AGIReply lastReply = channel.SendCommand(new Command.GetDataCommand(file, timeout)); + return lastReply.GetResult(); } #endregion @@ -158,8 +158,8 @@ namespace AsterNET.FastAGI protected internal string GetData(string file, long timeout, int maxDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.GetDataCommand(file, timeout, maxDigits)); - return channel.LastReply.GetResult(); + AGIReply lastReply = channel.SendCommand(new Command.GetDataCommand(file, timeout, maxDigits)); + return lastReply.GetResult(); } #endregion @@ -177,8 +177,8 @@ namespace AsterNET.FastAGI protected internal char GetOption(string file, string escapeDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.GetOptionCommand(file, escapeDigits)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.GetOptionCommand(file, escapeDigits)); + return lastReply.ResultCodeAsChar; } #endregion @@ -196,8 +196,8 @@ namespace AsterNET.FastAGI protected internal char GetOption(string file, string escapeDigits, int timeout) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.GetOptionCommand(file, escapeDigits, timeout)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.GetOptionCommand(file, escapeDigits, timeout)); + return lastReply.ResultCodeAsChar; } #endregion @@ -210,8 +210,8 @@ namespace AsterNET.FastAGI protected internal int Exec(string application) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.ExecCommand(application)); - return channel.LastReply.ResultCode; + AGIReply lastReply = channel.SendCommand(new Command.ExecCommand(application)); + return lastReply.ResultCode; } #endregion @@ -225,8 +225,8 @@ namespace AsterNET.FastAGI protected internal int Exec(string application, string options) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.ExecCommand(application, options)); - return channel.LastReply.ResultCode; + AGIReply lastReply = channel.SendCommand(new Command.ExecCommand(application, options)); + return lastReply.ResultCode; } #endregion @@ -291,8 +291,8 @@ namespace AsterNET.FastAGI protected internal char StreamFile(string file, string escapeDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.StreamFileCommand(file, escapeDigits)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.StreamFileCommand(file, escapeDigits)); + return lastReply.ResultCodeAsChar; } #endregion @@ -318,8 +318,8 @@ namespace AsterNET.FastAGI protected internal char SayDigits(string digits, string escapeDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.SayDigitsCommand(digits, escapeDigits)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.SayDigitsCommand(digits, escapeDigits)); + return lastReply.ResultCodeAsChar; } #endregion @@ -345,8 +345,8 @@ namespace AsterNET.FastAGI protected internal char SayNumber(string number, string escapeDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.SayNumberCommand(number, escapeDigits)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.SayNumberCommand(number, escapeDigits)); + return lastReply.ResultCodeAsChar; } #endregion @@ -372,8 +372,8 @@ namespace AsterNET.FastAGI protected internal char SayPhonetic(string text, string escapeDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.SayPhoneticCommand(text, escapeDigits)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.SayPhoneticCommand(text, escapeDigits)); + return lastReply.ResultCodeAsChar; } #endregion @@ -399,8 +399,8 @@ namespace AsterNET.FastAGI protected internal char SayAlpha(string text, string escapeDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.SayAlphaCommand(text, escapeDigits)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.SayAlphaCommand(text, escapeDigits)); + return lastReply.ResultCodeAsChar; } #endregion @@ -426,8 +426,8 @@ namespace AsterNET.FastAGI protected internal char SayTime(long time, string escapeDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.SayTimeCommand(time, escapeDigits)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.SayTimeCommand(time, escapeDigits)); + return lastReply.ResultCodeAsChar; } #endregion @@ -440,10 +440,10 @@ namespace AsterNET.FastAGI protected internal string GetVariable(string name) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.GetVariableCommand(name)); - if (channel.LastReply.ResultCode != 1) + AGIReply lastReply = channel.SendCommand(new Command.GetVariableCommand(name)); + if (lastReply.ResultCode != 1) return null; - return channel.LastReply.Extra; + return lastReply.Extra; } #endregion @@ -468,8 +468,8 @@ namespace AsterNET.FastAGI protected internal char WaitForDigit(int timeout) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.WaitForDigitCommand(timeout)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.WaitForDigitCommand(timeout)); + return lastReply.ResultCodeAsChar; } #endregion @@ -484,10 +484,10 @@ namespace AsterNET.FastAGI protected internal string GetFullVariable(string name) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.GetFullVariableCommand(name)); - if (channel.LastReply.ResultCode != 1) + AGIReply lastReply = channel.SendCommand(new Command.GetFullVariableCommand(name)); + if (lastReply.ResultCode != 1) return null; - return channel.LastReply.Extra; + return lastReply.Extra; } #endregion @@ -502,10 +502,10 @@ namespace AsterNET.FastAGI protected internal string GetFullVariable(string name, string channelName) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.GetFullVariableCommand(name, channelName)); - if (channel.LastReply.ResultCode != 1) + AGIReply lastReply = channel.SendCommand(new Command.GetFullVariableCommand(name, channelName)); + if (lastReply.ResultCode != 1) return null; - return channel.LastReply.Extra; + return lastReply.Extra; } #endregion @@ -530,8 +530,8 @@ namespace AsterNET.FastAGI protected internal char SayDateTime(long time, string escapeDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.SayDateTimeCommand(time, escapeDigits)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.SayDateTimeCommand(time, escapeDigits)); + return lastReply.ResultCodeAsChar; } /// @@ -545,8 +545,8 @@ namespace AsterNET.FastAGI protected internal char SayDateTime(long time, string escapeDigits, string format) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.SayDateTimeCommand(time, escapeDigits, format)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.SayDateTimeCommand(time, escapeDigits, format)); + return lastReply.ResultCodeAsChar; } /// @@ -561,8 +561,8 @@ namespace AsterNET.FastAGI protected internal char SayDateTime(long time, string escapeDigits, string format, string timezone) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.SayDateTimeCommand(time, escapeDigits, format, timezone)); - return channel.LastReply.ResultCodeAsChar; + AGIReply lastReply = channel.SendCommand(new Command.SayDateTimeCommand(time, escapeDigits, format, timezone)); + return lastReply.ResultCodeAsChar; } #endregion @@ -576,10 +576,10 @@ namespace AsterNET.FastAGI protected internal string DatabaseGet(string family, string key) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.DatabaseGetCommand(family, key)); - if (channel.LastReply.ResultCode != 1) + AGIReply lastReply = channel.SendCommand(new Command.DatabaseGetCommand(family, key)); + if (lastReply.ResultCode != 1) return null; - return channel.LastReply.Extra; + return lastReply.Extra; } #endregion @@ -662,8 +662,8 @@ namespace AsterNET.FastAGI protected internal int RecordFile(string file, string format, string escapeDigits, int timeout) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.RecordFileCommand(file, format, escapeDigits, timeout)); - return channel.LastReply.ResultCode; + AGIReply lastReply = channel.SendCommand(new Command.RecordFileCommand(file, format, escapeDigits, timeout)); + return lastReply.ResultCode; } /// @@ -687,8 +687,8 @@ namespace AsterNET.FastAGI protected internal int RecordFile(string file, string format, string escapeDigits, int timeout, int offset, bool beep, int maxSilence) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.RecordFileCommand(file, format, escapeDigits, timeout, offset, beep, maxSilence)); - return channel.LastReply.ResultCode; + AGIReply lastReply = channel.SendCommand(new Command.RecordFileCommand(file, format, escapeDigits, timeout, offset, beep, maxSilence)); + return lastReply.ResultCode; } #endregion @@ -710,8 +710,8 @@ namespace AsterNET.FastAGI protected internal int ControlStreamFile(string file) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.ControlStreamFileCommand(file)); - return channel.LastReply.ResultCode; + AGIReply lastReply = channel.SendCommand(new Command.ControlStreamFileCommand(file)); + return lastReply.ResultCode; } /// /// Plays the given file, allowing playback to be interrupted by the given @@ -731,8 +731,8 @@ namespace AsterNET.FastAGI protected internal int ControlStreamFile(string file, string escapeDigits) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.ControlStreamFileCommand(file, escapeDigits)); - return channel.LastReply.ResultCode; + AGIReply lastReply = channel.SendCommand(new Command.ControlStreamFileCommand(file, escapeDigits)); + return lastReply.ResultCode; } /// /// Plays the given file, allowing playback to be interrupted by the given @@ -753,8 +753,8 @@ namespace AsterNET.FastAGI protected internal int ControlStreamFile(string file, string escapeDigits, int offset) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.ControlStreamFileCommand(file, escapeDigits, offset)); - return channel.LastReply.ResultCode; + AGIReply lastReply = channel.SendCommand(new Command.ControlStreamFileCommand(file, escapeDigits, offset)); + return lastReply.ResultCode; } /// /// Plays the given file, allowing playback to be interrupted by the given @@ -778,8 +778,8 @@ namespace AsterNET.FastAGI protected internal int ControlStreamFile(string file, string escapeDigits, int offset, string forwardDigit, string rewindDigit, string pauseDigit) { AGIChannel channel = this.Channel; - channel.SendCommand(new Command.ControlStreamFileCommand(file, escapeDigits, offset, forwardDigit, rewindDigit, pauseDigit)); - return channel.LastReply.ResultCode; + AGIReply lastReply = channel.SendCommand(new Command.ControlStreamFileCommand(file, escapeDigits, offset, forwardDigit, rewindDigit, pauseDigit)); + return lastReply.ResultCode; } #endregion