Kita - 2ch client for KDE part2
■ このスレッドは過去ログ倉庫に格納されています
0544421
04/11/16 22:25:17ID:jQaZyowR(3) Thread::m_cached という変数を追加してそのスレがキャッシュに存在するかどうかを
Thread::m_cached が TRUE か FALSE で判定することに。KitaThreadInfo::readNum()==0
でも判定できますが、いちいちQMapで検索するのはオーバーヘッドがでかいのと将来的にKitaThreadInfo
は廃止する事からとりあえず別パラメータにしときましたが、この辺りは仕様変更が若干あるかも。
なおthread->setCached( TRUE )によってThread::m_cachedをTRUEにセットする場所とタイミングは
・BoardManager::getCachedThreadList(): dat落ちしたログのリストを取得したとき
・BoardManager::readSubjectTxt(): セッション中に初めて板を開いたとき
・DatInfo::saveIndex(): キャッシュにあるログの表示やスレのロードが終わったときに
DatInfo::initPrivate() や DatInfo::slotFinishLoad()の中から呼ばれる
の3箇所。逆にFALSEにするのは DatInfo::deleteCache() の一ヶ所。
(4) subject.txtを読み込んだとき、subject.txtから読み取ったレス数とidxのResNumの値が
違っていたら新しいレス数をidxにセーブするようにした。具体的にはBoardManager::readSubjectTxt()の
/* update res num */ 以下の部分で、スレッドがキャッシュされていて( thread->isCached() == TRUE )
かつ旧レス数( oldNum )と新しいレス数( newNum )が違うときはThreadIndex::setResNum()を呼んで
新しいレス数をセーブするという仕組み。これによってidxのResNumとReadNumは基本的に違う値になる。
とりあえず私的には
ResNum・・・サーバ上のレスの数
ReadNum・・・ローカルキャッシュ上のレスの数(既得数)
ViewPos・・・ここまで読んだの位置
という感じでやってましたが、この辺は適当に調整しておいて下さい。
■ このスレッドは過去ログ倉庫に格納されています