|
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
namespace LumiSoft.Net.SIP.Message
{
/// <summary>
/// This base class for SIP data types what has parameters support.
/// </summary>
public abstract class SIP_t_ValueWithParams : SIP_t_Value
{
private SIP_ParameterCollection m_pParameters = null;
/// <summary>
/// Default constructor.
/// </summary>
public SIP_t_ValueWithParams()
{
m_pParameters = new SIP_ParameterCollection();
}
#region mehtod ParseParameters
/// <summary>
/// Parses parameters from specified reader. Reader position must be where parameters begin.
/// </summary>
/// <param name="reader">Reader from where to read parameters.</param>
/// <exception cref="SIP_ParseException">Raised when invalid SIP message.</exception>
protected void ParseParameters(StringReader reader)
{
// Parse parameters
while(reader.Available > 0){
reader.ReadToFirstChar();
// We have parameter
if(reader.SourceString.StartsWith(";")){
reader.ReadSpecifiedLength(1);
string paramString = reader.QuotedReadToDelimiter(new char[]{';',','},false);
if(paramString != ""){
string[] name_value = paramString.Split(new char[]{'='},2);
if(name_value.Length == 2){
this.Parameters.Add(name_value[0],name_value[1]);
}
else{
this.Parameters.Add(name_value[0],null);
}
}
}
// Unknown data
else{
throw new SIP_ParseException("Unexpected value !");
}
}
}
#endregion
#region method ParametersToString
/// <summary>
/// Convert parameters to valid parameters string.
/// </summary>
/// <returns>Returns parameters string.</returns>
protected string ParametersToString()
{
StringBuilder retVal = new StringBuilder();
foreach(SIP_Parameter parameter in m_pParameters){
if(parameter.Value != null){
retVal.Append(";" + parameter.Name + "=" + parameter.Value);
}
else{
retVal.Append(";" + parameter.Name);
}
}
return retVal.ToString();
}
#endregion
#region Properties Implementation
/// <summary>
/// Gets via parameters.
/// </summary>
public SIP_ParameterCollection Parameters
{
get{ return m_pParameters; }
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.