public ChannelPattern(string pattern)
{
if (!pattern.StartsWith("/"))
{
throw new ArgumentException("Name must start with /");
}
if (pattern.Length > 1 && pattern.EndsWith("/"))
{
throw new ArgumentException("Name must end with segment");
}
hashCode = pattern.GetHashCode();
if (pattern.EndsWith("/**"))
{
starCount = 2;
prefix = pattern.Substring(0, pattern.Length - 3);
}
else if (pattern.EndsWith("/*"))
{
starCount = 1;
prefix = pattern.Substring(0, pattern.Length - 2);
}
else
{
starCount = 0;
prefix = pattern;
}
if (prefix.IndexOf("/*") >= 0)
{
throw new ArgumentException("Wildcard must be the last segment");
}
}