libgadu
1.12.2
|
Bufor wspierający obsługę pakietów typu Type-Value(s) Więcej...
Struktury danych | |
struct | gg_tvbuff |
Bufor wspierający obsługę pakietów typu Type-Value(s)
gg_tvbuff_t* gg_tvbuff_new | ( | const char * | buffer, |
size_t | length | ||
) |
Tworzy nową instancję bufora.
buffer | Bufor źródłowy; nie może być modyfikowany (w szczególności zwalniany) przez cały okres korzystania z jego opakowanej wersji. |
length | Długość bufora źródłowego. |
int gg_tvbuff_close | ( | gg_tvbuff_t * | tvb | ) |
Zwalnia opakowanie bufora. Przed zwolnieniem sprawdza, czy przeczytano go do końca.
tvb | Bufor. |
int gg_tvbuff_is_valid | ( | const gg_tvbuff_t * | tvb | ) |
Sprawdza, czy wszystkie odczyty z bufora były prawidłowe.
tvb | Bufor. |
size_t gg_tvbuff_get_remaining | ( | const gg_tvbuff_t * | tvb | ) |
Zwraca pozostałą do odczytania liczbę bajtów w buforze.
tvb | Bufor. |
int gg_tvbuff_have_remaining | ( | gg_tvbuff_t * | tvb, |
size_t | length | ||
) |
Sprawdza, czy w buforze pozostała określona liczba bajtów do odczytania. Jeżeli nie została - oznacza bufor jako nieprawidłowy.
tvb | Bufor. |
length | Ilość bajtów do odczytania. |
void gg_tvbuff_skip | ( | gg_tvbuff_t * | tvb, |
size_t | amount | ||
) |
Pomija określoną liczbę bajtów w buforze. Jeżeli w wyniku ich pominięcia wyjdzie poza zakres, oznacza bufor jako nieprawidłowy.
tvb | Bufor |
amount | Liczba bajtów do pominięcia |
void gg_tvbuff_rewind | ( | gg_tvbuff_t * | tvb, |
size_t | amount | ||
) |
Cofa się o określoną liczbę bajtów w buforze. Jeżeli cofnie przed pierwszy znak, oznacza bufor jako nieprawidłowy.
tvb | Bufor |
amount | Liczba bajtów do cofnięcia |
int gg_tvbuff_match | ( | gg_tvbuff_t * | tvb, |
uint8_t | value | ||
) |
Sprawdza, czy pod aktualną pozycją w buforze występuje podana wartość. Jeżeli tak, przesuwa aktualną pozycję do przodu.
tvb | Bufor. |
value | Wartość do sprawdzenia |
uint8_t gg_tvbuff_read_uint8 | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora liczbę 8-bitową.
tvb | Bufor |
uint32_t gg_tvbuff_read_uint32 | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora liczbę 32-bitową.
tvb | Bufor |
uint64_t gg_tvbuff_read_uint64 | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora liczbę 64-bitową.
tvb | Bufor |
uint64_t gg_tvbuff_read_packed_uint | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora skompresowaną liczbę całkowitą. Liczba taka może być zapisana w buforze na 1-9 bajtach, w zależności od jej wartości.
Skompresowana liczba jest zapisywana od najmłodszego bajtu do najstarszego niezerowego. W każdym bajcie zapisuje się bit sterujący (równy 0, jeżeli jest to ostatni bajt do przeczytania, lub 1 w p.p.) oraz 7 kolejnych bitów z kompresowanej liczby.
Przykładowo, liczby mniejsze od 128 (1000.0000b) są zapisywane dokładnie tak, jak uint8_t; a np. 12345 (0011.0000.0011.1001b) zostanie zapisana jako 0x60B9 (0110.0000.1011.1001b).
tvb | Bufor. |
const char* gg_tvbuff_read_buff | ( | gg_tvbuff_t * | tvb, |
size_t | length | ||
) |
Odczytuje z bufora podciąg bez kopiowania danych.
tvb | Bufor źródłowy |
length | Ilość bajtów do odczytania |
void gg_tvbuff_read_buff_cpy | ( | gg_tvbuff_t * | tvb, |
char * | buffer, | ||
size_t | length | ||
) |
Odczytuje z bufora podciąg kopiując go do nowego obszaru pamięci.
tvb | Bufor źródłowy |
buffer | Bufor docelowy |
length | Ilość bajtów do odczytania |
const char* gg_tvbuff_read_str | ( | gg_tvbuff_t * | tvb, |
size_t * | length | ||
) |
Odczytuje z bufora ciąg tekstowy (mogący zawierać dowolne znaki, również \0) bez kopiowania danych.
tvb | Bufor źródłowy |
length | Zmienna, do której zostanie zapisana długość odczytanego ciągu |
void gg_tvbuff_read_str_dup | ( | gg_tvbuff_t * | tvb, |
char ** | dst | ||
) |
Odczytuje z bufora ciąg tekstowy (mogący zawierać dowolne znaki, również \0) kopiując go do nowego obszaru pamięci. Zwrócony ciąg będzie zawsze zakończony znakiem \0.
tvb | Bufor źródłowy |
dst | Zmienna, do której zostanie zapisany wskaźnik na odczytany ciąg. Po użyciu, blok ten powinien zostać zwolniony za pomocą free() |
uin_t gg_tvbuff_read_uin | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora identyfikator użytkownika.
tvb | Bufor |
void gg_tvbuff_expected_uint8 | ( | gg_tvbuff_t * | tvb, |
uint8_t | value | ||
) |
Odczytuje z bufora liczbę 8-bitową i porównuje z podaną. Jeżeli te się różnią, zostaje wygenerowane ostrzeżenie.
tvb | Bufor |
value | Oczekiwana wartość |
void gg_tvbuff_expected_uint32 | ( | gg_tvbuff_t * | tvb, |
uint32_t | value | ||
) |
Odczytuje z bufora liczbę 32-bitową i porównuje z podaną. Jeżeli te się różnią, zostaje wygenerowane ostrzeżenie.
tvb | Bufor |
value | Oczekiwana wartość |
void gg_tvbuff_expected_eob | ( | const gg_tvbuff_t * | tvb | ) |
Oczekuje końca bufora. Jeżeli w buforze są jeszcze dane do przeczytania, generuje ostrzeżenie.
tvb | Bufor. |