Example #1
0
        /// <summary>
        /// 指定したテーブルのすべての板の既得スレッド情報を取得
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public static List <ThreadHeader> GetAllThreads(Cache cache, IBoardTable table)
        {
            List <ThreadHeader> items = new List <ThreadHeader>();

            foreach (Category categ in table.Items)
            {
                foreach (BoardInfo board in categ.Children)
                {
                    items.AddRange(GotThreadListIndexer.Read(cache, board));
                }
            }

            return(items);
        }
Example #2
0
        /// <summary>
        /// ストリームを閉じインデックス情報を保存
        /// </summary>
        public override void Close()
        {
            try
            {
                if (isOpen)
                {
                    // スレッドのインデックスを作成
                    bool success = ThreadIndexer.Write(cache, headerInfo);
                    Debug.Assert(success);

                    // 既得インデックスを作成
                    GotThreadListIndexer.Write(Cache, headerInfo);
                }
            }
            finally
            {
                isOpen = false;
                length = position = 0;

                storage.Close();
                baseReader.Close();
            }
        }
Example #3
0
        /// <summary>
        /// ローカルに保存された一覧を検索
        /// </summary>
        /// <param name="board"></param>
        public override bool Open(BoardInfo board)
        {
            if (board == null)
            {
                throw new ArgumentNullException("board");
            }
            if (isOpen)
            {
                throw new InvalidOperationException("一覧を読み込み中です");
            }

            // ログディレクトリ
            string folder = cache.GetFolderPath(board);

            // インデックスファイルを読み込む
            items  = GotThreadListIndexer.Read(cache, board);
            length = items.Count;

            position  = 0;
            boardInfo = board;
            isOpen    = true;

            return(isOpen);
        }