Exemplo n.º 1
0
        public override void AddLoggedData(ArrayList bucketIds, OPLogType type = OPLogType.Cache)
        {
            if (bucketIds != null)
            {
                IEnumerator ie = bucketIds.GetEnumerator();
                while (ie.MoveNext())
                {
                    if (_logMgr != null)
                    {
                        Hashtable loggedEnteries = _logMgr.GetLoggedEnteries((int)ie.Current);
                        if (loggedEnteries != null && loggedEnteries.Count > 0)
                        {
                            Hashtable removed = loggedEnteries["removed"] as Hashtable;
                            Hashtable updated = loggedEnteries["updated"] as Hashtable;

                            if (removed != null && removed.Count > 0)
                            {
                                IDictionaryEnumerator ide = removed.GetEnumerator();
                                while (ide.MoveNext())
                                {
                                    Remove(ide.Key, ItemRemoveReason.Removed, false, null, 0, LockAccessType.IGNORE_LOCK, new OperationContext(OperationContextFieldName.OperationType, OperationContextOperationType.CacheOperation));
                                }
                            }

                            if (updated != null && updated.Count > 0)
                            {
                                IDictionaryEnumerator ide = updated.GetEnumerator();
                                while (ide.MoveNext())
                                {
                                    CacheEntry entry = ide.Value as CacheEntry;
                                    if (entry != null)
                                    {
                                        Insert(ide.Key, entry, false, false, null, 0, LockAccessType.IGNORE_LOCK, new OperationContext(OperationContextFieldName.OperationType, OperationContextOperationType.CacheOperation));
                                    }
                                }
                            }
                        }

                        //disable logging for this bucket...
                        _logMgr.RemoveLogger((int)ie.Current);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public override Hashtable GetLogTable(ArrayList bucketIds, ref bool isLoggingStopped, OPLogType type = OPLogType.Cache)
        {
            Hashtable   result   = null;
            int         logCount = 0;
            IEnumerator ie       = bucketIds.GetEnumerator();

            while (ie.MoveNext())
            {
                Hashtable tmp = _logMgr.GetLogTable((int)ie.Current);
                if (tmp != null)
                {
                    if (result == null)
                    {
                        result = tmp;
                    }
                    else
                    {
                        ArrayList removed = tmp["removed"] as ArrayList;
                        ArrayList updated = tmp["updated"] as ArrayList;

                        if (removed != null)
                        {
                            ((ArrayList)result["removed"]).AddRange(removed);
                            logCount += removed.Count;
                        }

                        if (updated != null)
                        {
                            ((ArrayList)result["updated"]).AddRange(updated);
                            logCount += updated.Count;
                        }
                    }
                }
            }
            if (logCount < _stopLoggingThreshhold)
            {
                isLoggingStopped = true;
                _logMgr.StopLogging(bucketIds);
            }
            else
            {
                isLoggingStopped = false;
            }

            return(result);
        }