// System.Diagnostics.PerformanceCounterPermission.cs
//
// Authors:
-// Jonathan Pryor (jonpryor@vt.edu)
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+// Jonathan Pryor (jonpryor@vt.edu)
+// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+// Sebastien Pouliot <sebastien@ximian.com>
//
// (C) 2002
// (C) 2003 Andreas Nahr
-//
-
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
-using System.Diagnostics;
using System.Security.Permissions;
namespace System.Diagnostics {
[Serializable]
public sealed class PerformanceCounterPermission : ResourcePermissionBase {
+ PerformanceCounterPermissionEntryCollection innerCollection;
+
public PerformanceCounterPermission ()
{
+ SetUp ();
}
public PerformanceCounterPermission (PerformanceCounterPermissionEntry[] permissionAccessEntries)
{
if (permissionAccessEntries == null)
throw new ArgumentNullException("permissionAccessEntries");
- foreach (PerformanceCounterPermissionEntry entry in permissionAccessEntries)
- AddPermissionAccess (entry.CreateResourcePermissionBaseEntry ());
+
+ SetUp ();
+ innerCollection = new PerformanceCounterPermissionEntryCollection (this);
+ innerCollection.AddRange (permissionAccessEntries);
}
public PerformanceCounterPermission (PermissionState state)
: base (state)
{
+ SetUp ();
}
- public PerformanceCounterPermission (
- PerformanceCounterPermissionAccess permissionAccess,
- string machineName,
- string categoryName)
+ public PerformanceCounterPermission (PerformanceCounterPermissionAccess permissionAccess, string machineName, string categoryName)
{
- AddPermissionAccess (new PerformanceCounterPermissionEntry (permissionAccess, machineName, categoryName).CreateResourcePermissionBaseEntry ());
+ SetUp ();
+ innerCollection = new PerformanceCounterPermissionEntryCollection (this);
+ innerCollection.Add (new PerformanceCounterPermissionEntry (permissionAccess, machineName, categoryName));
}
public PerformanceCounterPermissionEntryCollection PermissionEntries {
- get {return new PerformanceCounterPermissionEntryCollection (base.GetPermissionEntries()); }
+ get {
+ if (innerCollection == null) {
+ // must be here to work with XML deserialization
+ innerCollection = new PerformanceCounterPermissionEntryCollection (this);
+ }
+ return innerCollection;
+ }
+ }
+
+ // private stuff
+
+ private void SetUp ()
+ {
+ TagNames = new string [2] { "Machine", "Category" };
+ PermissionAccessType = typeof (PerformanceCounterPermissionAccess);
+ }
+
+ internal ResourcePermissionBaseEntry[] GetEntries ()
+ {
+ return base.GetPermissionEntries ();
+ }
+
+ internal void ClearEntries ()
+ {
+ base.Clear ();
+ }
+
+ internal void Add (object obj)
+ {
+ PerformanceCounterPermissionEntry pcpe = (obj as PerformanceCounterPermissionEntry);
+ base.AddPermissionAccess (pcpe.CreateResourcePermissionBaseEntry ());
+ }
+
+ internal void Remove (object obj)
+ {
+ PerformanceCounterPermissionEntry pcpe = (obj as PerformanceCounterPermissionEntry);
+ base.RemovePermissionAccess (pcpe.CreateResourcePermissionBaseEntry ());
}
}
}