/// <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); }
/// <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(); } }
/// <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); }