Módulo: Mongo::Monitoramento::Subscribable
- Incluído em:
- Mongo::Monitoramento, global
- Definido em:
- build/ruby-driver-v2.19/lib/mongo/monitoring.rb
Visão geral
Contém métodos de assinatura comuns entre monitoramento e assinaturas de evento globais.
Recolhimento do Resumo do método de instância
-
#assinatura(tópico, assinante) ➤ Objeto
Inscrever um ouvinte em um tópico de evento .
-
#assinantes ➤ Hash <string, Object>
Obtenha todos os assinantes.
-
#assinantes?(tópico) ➤ verdadeiro, falso
Determine se há algum assinante para um evento específico .
-
#cancelar assinatura(tópico, assinante) ➤ Objeto
Cancelar a assinatura de um ouvinte de um tópico de evento .
Detalhes do método de instância
#assinatura(tópico, assinante) ➤ Objeto
É possível inscrever o mesmo ouvinte no mesmo tópico
Inscrever um ouvinte em um tópico de evento .
várias vezes; nesse caso, o ouvinte será invocado quantas vezes estiver inscrito e, para cancelá-lo, será necessário o mesmo número de chamadas de cancelamento.
105 106 107 |
# File 'build/ruby-driver-v2.19/lib/mongo/monitoring.rb', linha 105 def se inscrever(topic, assinante) Subscribers_for(topic).push(assinante) end |
#assinantes ➤ Hash <string, Object>
Obtenha todos os assinantes.
157 158 159 |
# File 'build/ruby-driver-v2.19/lib/mongo/monitoring.rb', linha 157 def assinantes @subscribers ||= {} end |
#assinantes?(topic) ➤ true, false
Determine se há algum assinante para um evento específico .
174 175 176 |
# File 'build/ruby-driver-v2.19/lib/mongo/monitoring.rb', linha 174 def assinantes?(topic) !Subscribers_for(topic).vazio? end |
#cancelar assinatura(tópico, assinante) ➤ Objeto
O registro de assinantes globais é separado do registro de assinantes por cliente. O mesmo assinante pode ser inscrito em eventos de um cliente específico, bem como globalmente; o cancelamento da assinatura globalmente não cancelará a assinatura desse assinante do cliente para o qual ele foi explicitamente inscrito.
Atualmente, a lista de assinantes globais é copiada para um cliente sempre que o cliente é criado. Portanto, o cancelamento da assinatura de um assinante globalmente não tem efeito para os clientes existentes - eles continuarão enviando eventos para o assinante com assinatura cancelada.
Cancelar a assinatura de um ouvinte de um tópico de evento .
Se o ouvinte tiver se assinatura no tópico do evento várias vezes, essa chamada removerá uma única vez.
Se o ouvinte não estiver inscrito no tópico, essa operação será não operacional e nenhuma exceção será gerada.
138 139 140 141 142 143 144 |
# File 'build/ruby-driver-v2.19/lib/mongo/monitoring.rb', linha 138 def cancelar assinatura(topic, assinante) subs = Subscribers_for(topic) index = subs.index(assinante) se index subs.delete_at(index) end end |