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


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

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

echo/
echo/full
msg/
out/

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

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

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

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

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

[#] Re: Обещал пояснить
Andrew Lobanov(station13, 1) — vit01
2015-11-09 22:07:10


vit01> Теперь более-менее понятно. Но из этого объяснения не ясно, перезаписывается ли постоянно локальный индекс и удаляются ли сообщения из базы при превышении лимита N на эху.
Индексы не перезаписываются, а дополняются. Удаление старых сообщений я думаю отдельной тулзой сделать. Чтобы без действий пользователя ничего не затиралось из базы.

vit01> Видимо, придётся таки почитать исходники. Тем более, само по себе занятие полезное.
Заранее извиняюсь. Мои исходники читать неудобно, так как я генерю не самый приятный код.

[#] Re: Обещал пояснить
vit01(mira, 1) — Andrew Lobanov
2015-11-09 20:08:14


> Всё равно как-то путано написал. Приступ афазии, видимо =)
Теперь более-менее понятно. Но из этого объяснения не ясно, перезаписывается ли постоянно локальный индекс и удаляются ли сообщения из базы при превышении лимита N на эху.

Видимо, придётся таки почитать исходники. Тем более, само по себе занятие полезное.