コード例 #1
0
ファイル: NfsExports.cs プロジェクト: orf53975/hadoop.net
 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);
 }
コード例 #2
0
ファイル: NfsExports.cs プロジェクト: orf53975/hadoop.net
        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);
            }
        }