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?