///------------------------------------------------------------------------------ /// <copyright file="RegexMatchTimeoutException.cs" company="Microsoft"> /// Copyright (c) Microsoft Corporation. All rights reserved. /// </copyright> /// /// <owner>gpaperin</owner> ///------------------------------------------------------------------------------ using System; using System.Runtime.Serialization; using System.Security; using System.Security.Permissions; namespace System.Text.RegularExpressions { /// <summary> /// This is the exception that is thrown when a RegEx matching timeout occurs. /// </summary> #if SILVERLIGHT #if FEATURE_NETCORE public #else internal #endif class RegexMatchTimeoutException : TimeoutException { #else [Serializable] public class RegexMatchTimeoutException : TimeoutException, ISerializable { #endif private string regexInput = null; private string regexPattern = null; private TimeSpan matchTimeout = TimeSpan.FromTicks(-1); /// <summary> /// This is the preferred constructor to use. /// The other constructors are provided for compliance to Fx design guidelines. /// </summary> /// <param name="regexInput">Matching timeout occured during mathing within the specified input.</param> /// <param name="regexPattern">Matching timeout occured during mathing to the specified pattern.</param> /// <param name="matchTimeout">Matching timeout occured becasue matching took longer than the specified timeout.</param> public RegexMatchTimeoutException(string regexInput, string regexPattern, TimeSpan matchTimeout) : base(SR.GetString(SR.RegexMatchTimeoutException_Occurred)) { Init(regexInput, regexPattern, matchTimeout); } /// <summary> /// This constructor is provided in compliance with common NetFx design patterns; /// developers should prefer using the constructor /// <code>public RegexMatchTimeoutException(string input, string pattern, TimeSpan matchTimeout)</code>. /// </summary> public RegexMatchTimeoutException() : base() { Init(); } /// <summary> /// This constructor is provided in compliance with common NetFx design patterns; /// developers should prefer using the constructor /// <code>public RegexMatchTimeoutException(string input, string pattern, TimeSpan matchTimeout)</code>. /// </summary> /// <param name="message">The error message that explains the reason for the exception.</param> public RegexMatchTimeoutException(string message) : base(message) { Init(); } /// <summary> /// This constructor is provided in compliance with common NetFx design patterns; /// developers should prefer using the constructor /// <code>public RegexMatchTimeoutException(string input, string pattern, TimeSpan matchTimeout)</code>. /// </summary> /// <param name="message">The error message that explains the reason for the exception.</param> /// <param name="inner">The exception that is the cause of the current exception, or a <code>null</code>.</param> public RegexMatchTimeoutException(string message, Exception inner) : base(message, inner) { Init(); } #if !SILVERLIGHT /// <summary> /// Initializes a new RegexMatchTimeoutException with serialized data. /// </summary> /// <param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param> /// <param name="context">The StreamingContext that contains contextual information about the source or destination.</param> [SecurityPermission(SecurityAction.LinkDemand, SerializationFormatter=true)] protected RegexMatchTimeoutException(SerializationInfo info, StreamingContext context) : base(info, context) { string input = info.GetString("regexInput"); string pattern = info.GetString("regexPattern"); TimeSpan timeout = TimeSpan.FromTicks(info.GetInt64("timeoutTicks")); Init(input, pattern, timeout); } [SecurityPermission(SecurityAction.LinkDemand, SerializationFormatter=true)] void ISerializable.GetObjectData(SerializationInfo si, StreamingContext context) { base.GetObjectData(si, context); si.AddValue("regexInput", this.regexInput); si.AddValue("regexPattern", this.regexPattern); si.AddValue("timeoutTicks", this.matchTimeout.Ticks); } #endif // !SILVERLIGHT private void Init() { Init("", "", TimeSpan.FromTicks(-1)); } private void Init(string input, string pattern, TimeSpan timeout) { this.regexInput = input; this.regexPattern = pattern; this.matchTimeout = timeout; } #if SILVERLIGHT && !FEATURE_NETCORE internal string Pattern { #else public string Pattern { #endif #if SILVERLIGHT [SecurityCritical] #else // SILVERLIGHT [PermissionSet(SecurityAction.LinkDemand, Unrestricted=true)] #endif // SILVERLIGHT get { return regexPattern; } } #if SILVERLIGHT && !FEATURE_NETCORE internal string Input { #else public string Input { #endif #if SILVERLIGHT [SecurityCritical] #else // SILVERLIGHT [PermissionSet(SecurityAction.LinkDemand, Unrestricted=true)] #endif // SILVERLIGHT get { return regexInput; } } #if SILVERLIGHT && !FEATURE_NETCORE internal TimeSpan MatchTimeout { #else public TimeSpan MatchTimeout { #endif #if SILVERLIGHT [SecurityCritical] #else // SILVERLIGHT [PermissionSet(SecurityAction.LinkDemand, Unrestricted=true)] #endif // SILVERLIGHT get { return matchTimeout; } } } // public class RegexMatchTimeoutException } // namespace System.Text.RegularExpressions // file RegexMatchTimeoutException.cs