e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
169 lines
5.8 KiB
C#
169 lines
5.8 KiB
C#
///------------------------------------------------------------------------------
|
|
/// <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
|