### Wstępna propozycja

Zdarzenia zachodzące w Kadu zapisują się w pliku
$HOME/.gg/history/all.dat
Plik zawiera jako pierwsze 4 bajty identyfikator w formacie ASCII:
KADU
Format zdarzenia:
type - 32-bity typ zdarzenia
time - 32-bity czas zajścia zdarzenia
uin - 32-bity uin nadawcy
nicklen - 32-bity długość nicku nadawcy
len - 32-bity długość frazy związanej ze zdarzeniem
mobilelen - 32-bity długość numeru komórki odbiorcy
filler - 8 bajtów wypełnienia zarezerwowane do wykorzystania w przyszłości
nick - nicklen bajtów z nickiem nadawcy
text - len bajtów z frazą
mobile - mobilelen bajtów z numerem telefonu komórkowego odbiorcy
Powyższy plik zawiera opis wszystkich zdarzeń zachodzących w Kadu w porządku chronologicznym.
Możliwe typy zdarzeń (pole type)
bit31 = 1 - zdarzenie zaznaczone do skasowania;
bit30 = 1 - zdarzenie wygenerowane przez nas; bit30 = 0 - zdarzenie wygenerowane przez kogoś;
bit29 = 1 - zdarzenie wygenerowane przez osobę ignorowaną przez nas;
bit28 = 1 - zmiana statusu;
bit27 = 1 - status z opisem;
bit3 - bit0 - numer statusu:
0 - "dostępny"
1 - "zaraz wracam"
2 - "ukryty"
3 - "niedostępny"
4 - 7 - niewykorzystane
bit26 = 1 - wiadomość;
bit7 - bit4 - typ wiadomości:
0 - "message"
1 - "chat"
2 - 6 - niewykorzystane
7 - "sms"
Dla każdej grupy użytkowników [uin1,uin2,....,uinN] tworzony jest plik o nazwie:
uin1_uin2_..._uinN.idx
zawierający zbiór 32-bitowych offsetów zdarzeń z pliku all.dat.
Offsety są zapisane w ten sposób, że odczytywane za ich pomocą zdarzenia są uporządkowane ze względu na czas (porządek chronologiczny). Offset równy 0 oznacza skasowane zdarzenie.
Dla każdego numeru telefonu komórkowego na który został wysłany jakikolwiek sms tworzony jest plik o nazwie:
mNUMER.idx
zawierający zbiór 32-bitowych offsetów zdarzeń z pliku all.dat.
Offsety są zapisane podobnie jak dla wcześniejszego typu pliku.
Co o tym myślicie?