Exemple #1
0
        /// <summary>
        /// Shutdown the Process
        /// </summary>
        public void Shutdown()
        {
            lock (_lock)
            {
                if (_shutdowndone == true)
                {
                    return;
                }

                InternalSave();
                if (_deleted != null)
                {
                    _deleted.SaveIndex();
                    _deleted.Shutdown();
                    _deleted = null;
                }

                if (_bitmaps != null)
                {
                    _bitmaps.Commit(Global.FreeBitmapMemoryOnSave);
                    _bitmaps.Shutdown();
                    _bitmaps = null;
                }

                if (HootConfOptions.DocMode)
                {
                    _docs.Shutdown();
                }
                _shutdowndone = true;
            }
        }
Exemple #2
0
        private void InternalSave()
        {
            _log.Debug("saving index...");
            DateTime dt = FastDateTime.Now;

            // save deleted
            if (_deleted != null)
            {
                _deleted.SaveIndex();
            }

            // save docs
            if (_docMode)
            {
                _docs.SaveIndex();
            }

            if (_bitmaps != null)
            {
                _bitmaps.Commit(false);
            }

            if (_words != null && _wordschanged == true)
            {
                MemoryStream ms = new MemoryStream();
                BinaryWriter bw = new BinaryWriter(ms, Encoding.UTF8);

                // save words and bitmaps
                using (FileStream words = new FileStream(_Path + _FileName + ".words", FileMode.Create))
                {
                    var keys = _words.Keys();
                    int c    = keys.Length;
                    _log.Debug("key count = " + c);
                    foreach (string key in _words.Keys())
                    {
                        try//FIX : remove when bug found
                        {
                            bw.Write(key);
                            bw.Write(_words[key]);
                        }
                        catch (Exception ex)
                        {
                            _log.Error(" on key = " + key);
                            throw ex;
                        }
                    }
                    byte[] b = ms.ToArray();
                    words.Write(b, 0, b.Length);
                    words.Flush();
                    words.Close();
                }
            }
            _log.Debug("save time (ms) = " + FastDateTime.Now.Subtract(dt).TotalMilliseconds);
        }
Exemple #3
0
        private void InternalSave()
        {
            _log.Info("saving index...");
            DateTime dt = FastDateTime.Now;

            // save deleted
            if (_deleted != null)
            {
                _deleted.SaveIndex();
            }

            // save docs
            if (_docMode)
            {
                _docs.SaveIndex();
            }

            if (_bitmaps != null)
            {
                _bitmaps.Commit(false);
            }

            if (_words != null && _wordschanged == true)
            {
                MemoryStream ms = new MemoryStream();
                BinaryWriter bw = new BinaryWriter(ms, Encoding.UTF8);

                // save words and bitmaps
                using (FileStream words = new FileStream(_Path + _FileName + ".words", FileMode.Create))
                {
                    foreach (string key in _words.Keys())
                    {
                        bw.Write(key);
                        bw.Write(_words[key]);
                    }
                    byte[] b = ms.ToArray();
                    words.Write(b, 0, b.Length);
                    words.Flush();
                    words.Close();
                }
                _wordschanged = false;
            }
            _log.Info("save time (ms) = " + FastDateTime.Now.Subtract(dt).TotalMilliseconds);
        }
Exemple #4
0
 /// <summary>
 /// Save the index file
 /// </summary>
 public void SaveIndex()
 {
     if (_index != null)
     {
         lock (_savelock)
         {
             log.Debug("saving to disk");
             _index.SaveIndex();
             _deleted.SaveIndex();
             log.Debug("index saved");
         }
     }
 }