// Token: 0x0600133E RID: 4926 RVA: 0x0004D468 File Offset: 0x0004B668
        public IEnumerable <CopyStatusClientCachedEntry> GetCopyStatusesByServer(AmServerName server, IEnumerable <IADDatabase> expectedDatabases, CopyStatusClientLookupFlags flags)
        {
            if (expectedDatabases == null)
            {
                return(new List <CopyStatusClientCachedEntry>());
            }
            List <CopyStatusClientCachedEntry> list = null;

            if (!this.IsReadThroughNeeded(flags))
            {
                if (this.m_statusPoller != null)
                {
                    this.m_statusPoller.TryWaitForInitialization();
                }
                list = this.m_statusTable.GetCopyStatusCachedEntriesByServer(server);
            }
            if (list == null)
            {
                list = new List <CopyStatusClientCachedEntry>(expectedDatabases.Count <IADDatabase>());
            }
            Dictionary <Guid, CopyStatusClientCachedEntry> tempStatusTable = list.ToDictionary((CopyStatusClientCachedEntry status) => status.DbGuid);
            Dictionary <Guid, IADDatabase> expectedDbsTable = expectedDatabases.ToDictionary((IADDatabase db) => db.Guid);

            if (expectedDatabases.All((IADDatabase db) => tempStatusTable.ContainsKey(db.Guid)))
            {
                return((from status in list
                        where expectedDbsTable.ContainsKey(status.DbGuid)
                        select status).ToList <CopyStatusClientCachedEntry>());
            }
            Exception ex = null;

            return(this.FetchAllCopyStatusesFromRpc(server, expectedDatabases, ref ex));
        }
        // Token: 0x0600133D RID: 4925 RVA: 0x0004D334 File Offset: 0x0004B534
        public IEnumerable <CopyStatusClientCachedEntry> GetCopyStatusesByDatabase(Guid dbGuid, IEnumerable <AmServerName> servers, CopyStatusClientLookupFlags flags)
        {
            if (servers == null)
            {
                return(new List <CopyStatusClientCachedEntry>());
            }
            List <CopyStatusClientCachedEntry> list = null;

            if (!this.IsReadThroughNeeded(flags))
            {
                list = this.m_statusTable.GetCopyStatusCachedEntriesByDatabase(dbGuid);
            }
            if (list == null)
            {
                list = new List <CopyStatusClientCachedEntry>(servers.Count <AmServerName>());
            }
            using (IEnumerator <AmServerName> enumerator = servers.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    AmServerName server = enumerator.Current;
                    if (!list.Any((CopyStatusClientCachedEntry status) => server.Equals(status.ServerContacted)))
                    {
                        list.Add(this.GetCopyStatusCachedEntry(dbGuid, server, flags));
                    }
                }
            }
            return((from status in list
                    where servers.Contains(status.ServerContacted)
                    select status).ToList <CopyStatusClientCachedEntry>());
        }
        // Token: 0x06001340 RID: 4928 RVA: 0x0004D578 File Offset: 0x0004B778
        public CopyStatusClientCachedEntry GetCopyStatusCachedEntry(Guid dbGuid, AmServerName server, CopyStatusClientLookupFlags flags)
        {
            CopyStatusClientCachedEntry copyStatusClientCachedEntry = null;
            Exception ex   = null;
            bool      flag = this.IsReadThroughNeeded(flags);

            if (!flag)
            {
                if (this.m_statusPoller != null)
                {
                    this.m_statusPoller.TryWaitForInitialization();
                }
                copyStatusClientCachedEntry = this.m_statusTable.GetCopyStatusCachedEntry(dbGuid, server);
                if (copyStatusClientCachedEntry == null)
                {
                    flag = true;
                    CopyStatusClientLookup.Tracer.TraceDebug <Guid, AmServerName>((long)this.GetHashCode(), "CopyStatusClientLookup.GetCopyStatus for DB '{0}' to server '{1}' hit a cache miss! Performing a read through instead!", dbGuid, server);
                }
            }
            if (flag)
            {
                copyStatusClientCachedEntry = this.FetchCopyStatusFromRpc(dbGuid, server, ref ex);
            }
            return(copyStatusClientCachedEntry);
        }
 // Token: 0x06001343 RID: 4931 RVA: 0x0004D6B0 File Offset: 0x0004B8B0
 private bool IsReadThroughNeeded(CopyStatusClientLookupFlags flags)
 {
     return((flags & CopyStatusClientLookupFlags.ReadThrough) != CopyStatusClientLookupFlags.None || !this.m_cachingEnabled);
 }
 // Token: 0x0600133F RID: 4927 RVA: 0x0004D560 File Offset: 0x0004B760
 public CopyStatusClientCachedEntry GetCopyStatus(Guid dbGuid, AmServerName server, CopyStatusClientLookupFlags flags)
 {
     return(this.GetCopyStatusCachedEntry(dbGuid, server, flags));
 }