Ignore:
Timestamp:
Sep 4, 2018, 2:33:52 PM (6 years ago)
Author:
alloc
Message:

More cleanup, allocation improvements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/MapRendering/Web/WebPermissions.cs

    r325 r326  
    1212                        new Dictionary<string, WebModulePermission> ();
    1313
    14                 private Dictionary<string, AdminToken> admintokens;
     14                private readonly Dictionary<string, AdminToken> admintokens = new CaseInsensitiveStringDictionary<AdminToken> ();
    1515                private FileSystemWatcher fileWatcher;
    1616
    17                 private Dictionary<string, WebModulePermission> modules;
     17                private readonly Dictionary<string, WebModulePermission> modules = new CaseInsensitiveStringDictionary<WebModulePermission> ();
    1818
    1919                public WebPermissions () {
     
    4949
    5050                public WebModulePermission GetModulePermission (string _module) {
    51                         if (modules.ContainsKey (_module.ToLower ())) {
    52                                 return modules [_module.ToLower ()];
     51                        WebModulePermission result;
     52                        if (modules.TryGetValue (_module, out result)) {
     53                                return result;
    5354                        }
    5455
     
    8384                public AdminToken[] GetAdmins () {
    8485                        AdminToken[] result = new AdminToken[admintokens.Count];
    85                         admintokens.Values.CopyTo (result, 0);
     86                        admintokens.CopyValuesTo (result);
    8687                        return result;
    8788                }
     
    9091                // Commands
    9192                public void AddModulePermission (string _module, int _permissionLevel, bool _save = true) {
    92                         WebModulePermission p = new WebModulePermission (_module.ToLower (), _permissionLevel);
     93                        WebModulePermission p = new WebModulePermission (_module, _permissionLevel);
    9394                        lock (this) {
    9495                                modules [_module] = p;
     
    100101
    101102                public void AddKnownModule (string _module, int _defaultPermission) {
    102                         if (!string.IsNullOrEmpty (_module)) {
    103                                 lock (this) {
    104                                         if (!IsKnownModule (_module)) {
    105                                                 knownModules.Add (_module, new WebModulePermission (_module, _defaultPermission));
    106                                         }
    107 
    108                                         if (_defaultPermission > 0 && !modules.ContainsKey (_module.ToLower ())) {
    109                                                 AddModulePermission (_module, _defaultPermission);
    110                                         }
     103                        if (string.IsNullOrEmpty (_module)) {
     104                                return;
     105                        }
     106
     107                        lock (this) {
     108                                if (!IsKnownModule (_module)) {
     109                                        knownModules.Add (_module, new WebModulePermission (_module, _defaultPermission));
     110                                }
     111
     112                                if (_defaultPermission > 0 && !modules.ContainsKey (_module)) {
     113                                        AddModulePermission (_module, _defaultPermission);
    111114                                }
    112115                        }
     
    114117
    115118                public bool IsKnownModule (string _module) {
    116                         if (!string.IsNullOrEmpty (_module)) {
    117                                 lock (this) {
    118                                         return knownModules.ContainsKey (_module);
    119                                 }
    120                         }
    121 
    122                         return false;
     119                        if (string.IsNullOrEmpty (_module)) {
     120                                return false;
     121                        }
     122
     123                        lock (this) {
     124                                return knownModules.ContainsKey (_module);
     125                        }
     126
    123127                }
    124128
    125129                public void RemoveModulePermission (string _module, bool _save = true) {
    126130                        lock (this) {
    127                                 modules.Remove (_module.ToLower ());
     131                                modules.Remove (_module);
    128132                                if (_save) {
    129133                                        Save ();
     
    174178
    175179                public void Load () {
    176                         admintokens = new Dictionary<string, AdminToken> ();
    177                         modules = new Dictionary<string, WebModulePermission> ();
     180                        admintokens.Clear ();
     181                        modules.Clear ();
    178182
    179183                        if (!Utils.FileExists (GetFullPath ())) {
     
    190194                                xmlDoc.Load (GetFullPath ());
    191195                        } catch (XmlException e) {
    192                                 Log.Error (string.Format ("Failed loading permissions file: {0}", e.Message));
     196                                Log.Error ("Failed loading permissions file: " + e.Message);
    193197                                return;
    194198                        }
     
    196200                        XmlNode adminToolsNode = xmlDoc.DocumentElement;
    197201
     202                        if (adminToolsNode == null) {
     203                                Log.Error ("Failed loading permissions file: No DocumentElement found");
     204                                return;
     205                        }
     206                       
    198207                        foreach (XmlNode childNode in adminToolsNode.ChildNodes) {
    199208                                if (childNode.Name == "admintokens") {
     
    230239                                                string name = lineItem.GetAttribute ("name");
    231240                                                string token = lineItem.GetAttribute ("token");
    232                                                 int permissionLevel = 2000;
     241                                                int permissionLevel;
    233242                                                if (!int.TryParse (lineItem.GetAttribute ("permission_level"), out permissionLevel)) {
    234243                                                        Log.Warning (
     
    267276                                                }
    268277
    269                                                 int permissionLevel = 0;
     278                                                int permissionLevel;
    270279                                                if (!int.TryParse (lineItem.GetAttribute ("permission_level"), out permissionLevel)) {
    271280                                                        Log.Warning (
     
    275284                                                }
    276285
    277                                                 AddModulePermission (lineItem.GetAttribute ("module").ToLower (), permissionLevel, false);
     286                                                AddModulePermission (lineItem.GetAttribute ("module"), permissionLevel, false);
    278287                                        }
    279288                                }
Note: See TracChangeset for help on using the changeset viewer.