Circular (gb.data)
Um buffer circular, ou Circular for short, é um buffer de tamanho fixo com uma ponteiro de leitura e escrita.
Quando os dados são lidos ou escritos, o ponteiro adequado é movido para a frente independentemente do outro.
Quando o fim do buffer é atingido, o ponteiro volta ao inicio. Assim, os valores antigos de leitura nunca podem ser substituídos.
Este tipo de dados pode ser ideal para a comunicação entre as entidades onde realmente não importa quando valores antigos são reescritos, mas, mantém um buffer de tamanho fixo. Por exemplo, as mensagens de log são tradicionalmente tratados com essa técnica.
Mais informações sobre buffers circulares em
Wikipedia
Properties
IsEmpty
|
Retorna TRUE se o Circular está vazio, ou seja, o ponteiro de leitura é o ponteiro de escrita.
|
IsFull
|
Retorna TRUE se o Circular está cheio, ou seja, o ponteiro de escrita se aproximou do ponteiro de leitura. Dependendo das configurações Overwrite, o buffer pode ainda ser escrito até mesmo se estiver cheio.
|
Overwrite
|
Retorno ou define se novos dados irão substituir os dados mais antigo não lidos em um Circular cheio.
|
Reader
|
Retorna ou define o índice do ponteiro de leitura.
|
Size
|
Retorna ou define o tamanho do buffer.
|
Writer
|
Retorna ou define o ponteiro de escrita.
|
Methods
Clear
|
Remove todos os elementos do Circular avançando o ponteiro de leitura para o ponteiro de escrita.
|
Peek
|
Ler um valor sem mover o ponteiro de leitura para frente.
|
Read
|
Ler um valor, ou seja, devolver o elemento no ponteiro de leitura e faz avançar o ponteiro. Se o ponteiro de leitura atinge o ponteiro de escrita (o Circular torna-se vazio), NULL é retornado.
|
Reset
|
Define a leitura e escrever ponteiros para índice 0. O Circular então, está "vazio". Além disso, "cheio" ao mesmo tempo se o seu tamanho é 0:-)
|
Resize
|
Redimensiona o buffer.
|
Write
|
Escreve um elemento para o Circular e avançar o ponteiro de escrita.
|