Saltar para o conteúdo
Dialova

Documentação IRC · Avançado

Batch: agrupar eventos IRC relacionados

batch indica que várias mensagens IRC pertencem ao mesmo conjunto. O tipo de lote explica a sua relação: um netsplit ou um excerto do histórico, por exemplo. Um batch não é automaticamente uma conversa com várias linhas.

A equipa do Dialova · Verificado em

Abrir um lote, associar mensagens e fechá-lo #

Troca IRC: C = cliente, S = servidor
S: :irc.example BATCH +lot1 netsplit irc-a.example irc-b.example
S: @batch=lot1 :Bob!u@cloak.example QUIT :Connexion interrompue
S: @batch=lot1 :Chloe!u@cloak.example QUIT :Connexion interrompue
S: :irc.example BATCH -lot1

O servidor abre o lote com + seguido de um identificador opaco e de um tipo. As mensagens associadas têm a etiqueta batch correspondente. O lote termina com - seguido do mesmo identificador. O identificador distingue maiúsculas e minúsculas; não lhe atribuas um significado funcional.

Negociação e tipo de lote #

O cliente pede a capacidade batch e espera ACK. Tem de compreender o formato das etiquetas. Os tipos de batch não são uma lista negociada por CAP: cada extensão define o significado do seu tipo. Um tipo desconhecido não autoriza a descartar o seu conteúdo.

Um lote pode estar vazio. Vários lotes podem intercalar-se ou estar aninhados. Um único buffer global, ou assumir que todas as mensagens seguintes pertencem ao lote, interpretaria mal trocas válidas.

Histórico e estado atual #

O tipo chathistory agrupa eventos passados. Não retires um membro atualmente presente só porque um antigo QUIT aparece num lote histórico: a apresentação visual e as alterações do estado atual têm funções diferentes.

À data de verificação, a capacidade de pedido de histórico continua a ser draft/chathistory, enquanto o tipo de lote chathistory está finalizado. A extensão draft/multiline descreve ainda outra utilização. Suportar batch não basta para prometer estas funcionalidades.

Limitar e terminar o processamento #

  • Manter uma tabela de lotes por identificador, não uma única variável.
  • Manter a ligação a um eventual lote principal.
  • Limitar o tamanho e o número de lotes e tratar as interrupções de transporte.
  • Não apresentar uma reprodução do histórico como uma nova ação nem responder automaticamente a eventos históricos.

Fontes e verificação

Os exemplos usam alcunhas e domínios fictícios, salvo os pontos de ligação expressamente documentados. As extensões e definições específicas de uma rede são assinaladas no texto.