#  Обещал пояснить
Andrew Lobanov (station13, 1) → All  –  04:24:07 2015-11-09

Сабж про новый метод получения сообщений в цезии (пока этих изменений нет в репозитории, они только у меня и проходят тестирование).

Сначала клиент узнаёт из конфига, какие эхи и на каких нодах есть (не факт, что они есть, но это и так все понимают). Попутно он создаёт следующую иерархию:

echo/
echo/full
msg/
out/

При получении данных с ноды, клиент проверяет есть ли у него список сообщений (индекс) для эхоконференции в echo/. Потом забирает индекс сообщений с ноды. Если локальный индекс не найден, то берётся n последних записей из индекса ноды, они записываются в локальный индекс и скачиваются. После чего полный индекс ноды кладётся в директорию echo/full/. При последующем обмене используется индекс именно из этой директории, а индексы из echo/ используются для работы клиента.

Таким образом, я отказался от хранения полного архива сообщений на стороне клиента. Однако, в случае, если есть желание получить полный архив, можно на экране выбора эхи пометить нужные конференции на клонирование и при следующем обмене с нодой, они будут получены в полном объёме.

Поверх этого потом можно будет весьма просто накрутить поддержку расширения стандарта для экономии трафика и ускорения обмена. Или для получения не полной копии, а произвольной выборки сообщений.

Всё равно как-то путано написал. Приступ афазии, видимо =)

PS Пока всё это не слишком удобно для ручного ковыряния в базе, но я и не ориентировал цезий на это. К тому же при минимальных усилий со стороны пользователя всегда можно получить полную копию эхи для последующего переноса/расковыривания/резервного копирования.
Powered by iii-php v0.11