Merge pull request #223 from ddyner/SocketReceiveBufferSize

Add socket ReceiveBufferSize settings to public property
This commit is contained in:
Deantwo 2020-01-27 07:24:46 +01:00 committed by GitHub
commit 35b66da0ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 13 deletions

View file

@ -6,6 +6,9 @@ using System;
namespace AsterNET.IO
{
/// <summary>
/// Socket connection to asterisk.
/// </summary>
public class SocketConnection
{
private TcpClient tcpClient;
@ -23,21 +26,29 @@ namespace AsterNET.IO
/// <param name="port">client port</param>
/// <param name="encoding">encoding</param>
public SocketConnection(string host, int port, Encoding encoding)
:this(new TcpClient(host, port), encoding)
{
initial = true;
this.encoding = encoding;
this.tcpClient = new TcpClient(host, port);
this.networkStream = this.tcpClient.GetStream();
this.reader = new StreamReader(this.networkStream, encoding);
this.writer = new BinaryWriter(this.networkStream, encoding);
}
/// <summary>
/// Consructor
/// </summary>
/// <param name="host">client host</param>
/// <param name="port">client port</param>
/// <param name="encoding">encoding</param>
/// <param name="receiveBufferSize">size of the receive buffer.</param>
public SocketConnection(string host, int port,int receiveBufferSize, Encoding encoding)
: this (new TcpClient(host, port) {ReceiveBufferSize = receiveBufferSize }, encoding)
{
}
#endregion
#region Constructor - SocketConnection(socket)
/// <summary>
/// Constructor
/// </summary>
/// <param name="socket">TCP client from Listener</param>
/// <param name="tcpClient">TCP client from Listener</param>
/// <param name="encoding">encoding</param>
internal SocketConnection(TcpClient tcpClient, Encoding encoding)
{

View file

@ -653,14 +653,14 @@ namespace AsterNET.Manager
/// <param name="username">the username to use for login</param>
/// <param name="password">the password to use for login</param>
/// <param name="socketEncoding">text encoding to asterisk input/output stream</param>
public ManagerConnection(string hostname, int port, string username, string password, Encoding encoding)
public ManagerConnection(string hostname, int port, string username, string password, Encoding socketEncoding)
: this()
{
this.hostname = hostname;
this.port = port;
this.username = username;
this.password = password;
this.socketEncoding = encoding;
this.socketEncoding = socketEncoding;
}
#endregion
@ -855,15 +855,36 @@ namespace AsterNET.Manager
}
#endregion
#region SocketEncoding
#region Socket Settings
/// <summary>
/// Socket Encoding - default ASCII
/// </summary>
/// <remarks>
/// Attention!
/// <para>
/// The value of this property must be set before establishing a connection with the Asterisk.
/// Changing the property doesn't do anything while you are already connected.
/// </para>
/// </remarks>
public Encoding SocketEncoding
{
get { return socketEncoding; }
set { socketEncoding = value; }
}
/// <summary>
/// Socket Receive Buffer Size
/// </summary>
/// <remarks>
/// Attention!
/// <para>
/// The value of this property must be set before establishing a connection with the Asterisk.
/// Changing the property doesn't do anything while you are already connected.
/// </para>
/// </remarks>
public int SocketReceiveBufferSize { get; set;}
#endregion
#region Version
@ -1075,6 +1096,9 @@ namespace AsterNET.Manager
#endif
try
{
if (SocketReceiveBufferSize>0)
mrSocket = new SocketConnection(hostname, port, SocketReceiveBufferSize, socketEncoding);
else
mrSocket = new SocketConnection(hostname, port, socketEncoding);
result = mrSocket.IsConnected;
}