using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SuperSocket.SocketBase.Protocol { /// /// Basic request info parser, which parse request info by separating /// public class BasicRequestInfoParser : IRequestInfoParser { private readonly string m_Spliter; private readonly string[] m_ParameterSpliters; private const string m_OneSpace = " "; /// /// The default singlegton instance /// public static readonly BasicRequestInfoParser DefaultInstance = new BasicRequestInfoParser(); /// /// Initializes a new instance of the class. /// public BasicRequestInfoParser() : this(m_OneSpace, m_OneSpace) { } /// /// Initializes a new instance of the class. /// /// The spliter between command name and command parameters. /// The parameter spliter. public BasicRequestInfoParser(string spliter, string parameterSpliter) { m_Spliter = spliter; m_ParameterSpliters = new string[] { parameterSpliter }; } #region IRequestInfoParser Members /// /// Parses the request info. /// /// The source. /// public StringRequestInfo ParseRequestInfo(string source) { int pos = source.IndexOf(m_Spliter); string name = string.Empty; string param = string.Empty; if (pos > 0) { name = source.Substring(0, pos); param = source.Substring(pos + 1); } else { name = source; } return new StringRequestInfo(name, param, param.Split(m_ParameterSpliters, StringSplitOptions.RemoveEmptyEntries)); } #endregion } }