public override bool Equals(object obj) { if (this == obj) { return(true); } if (obj is NfsExports.AccessCacheEntry) { NfsExports.AccessCacheEntry entry = (NfsExports.AccessCacheEntry)obj; return(this.hostAddr.Equals(entry.hostAddr)); } return(false); }
internal virtual AccessPrivilege GetAccessPrivilege(string address, string hostname ) { long now = Runtime.NanoTime(); NfsExports.AccessCacheEntry newEntry = new NfsExports.AccessCacheEntry(address, AccessPrivilege .None, now + this.cacheExpirationPeriod); // check if there is a cache entry for the given address NfsExports.AccessCacheEntry cachedEntry = accessCache.Get(newEntry); if (cachedEntry != null && now < cachedEntry.expirationTime) { // get a non-expired cache entry, use it return(cachedEntry.access); } else { foreach (NfsExports.Match match in mMatches) { if (match.IsIncluded(address, hostname)) { if (match.accessPrivilege == AccessPrivilege.ReadOnly) { newEntry.access = AccessPrivilege.ReadOnly; break; } else { if (match.accessPrivilege == AccessPrivilege.ReadWrite) { newEntry.access = AccessPrivilege.ReadWrite; } } } } accessCache.Put(newEntry); return(newEntry.access); } }