Classe: Mongo::Socket Private

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
Soquete::Constantes
Definido em:
lib/mongo/socket.rb,
lib/mongo/socket/ssl.rb,
lib/mongo/socket/tcp.rb,
lib/mongo/socket/unix.rb,
lib/mongo/socket/ocsp_cache.rb,
lib/ mongo/socket/ocsp_verifier.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

Fornece dados adicionais sobre soquetes para uso do driver.

Desde:

  • 2.0.0

Definido sob namespace

Módulos: OcspCache Classes: OcspVerifier, SSL, TCP, Unix

Colapsode resumo constante

SSL_ERROR =

Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.

Obsoleto.

Mensagem de erro para exceções relacionadas ao TLS.

Desde:

  • 2.0.0

'O MongoDB pode não ser configurado com suporte a TLS'
TIMEOUT_ERROR =

Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.

Obsoleto.

Mensagem de erro para tempos limite em chamadas de soquete.

Desde:

  • 2.0.0

'A solicitação de soquete atingiu o tempo limite'
TIMEOUT_PACK =

Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.

A diretiva do pacote para tempos limite.

Desde:

  • 2.0.0

'l_2'
WRITE_CHUNK_SIZE =

Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.

Escreva dados no soquete em blocos desse tamanho.

Desde:

  • 2.0.0

65_536

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(timeout, opções) ➤ Soquete

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Inicializa atributos de soquete comuns.

Parâmetros:

  • timeout (Flutuante)

    O valor de tempo limite do soquete.

  • opções (Hash)

    As opções.

Hash de opções (opções):

  • :connect_timeout (Flutuante)

    Tempo limite de conexão.

  • :connection_address (Endereço)

    Endereço da conexão que criou este soquete.

  • :connection_generação (Inteiro)

    Geração da conexão (para conexões não monitoradas) que criou esse soquete.

  • :monitor (verdadeiro | falso)

    Se esse soquete foi criado por uma conexão de monitoramento.

  • :pipe (IO)

    O descritor de arquivo para o final de leitura do pipe para ouvir durante a chamada de sistema selecionada ao ler do soquete.

Desde:

  • 2.0.0



70
71
72
73
# Arquivo 'lib/mongo/socket.rb', linha 70

def inicializar(timeout, opções)
  @timeout = timeout
  @opções = opções
end

Detalhes do atributo da instância

#famíliainteiro (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna família O tipo de família anfitriã.

Retorna:

  • (Inteiro)

    família O tipo de família anfitriã.

Desde:

  • 2.0.0



76
77
78
# Arquivo 'lib/mongo/socket.rb', linha 76

def família
  @family
end

#opçõesHash (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna as opções.

Retorna:

  • (Hash)

    As opções.

Desde:

  • 2.0.0



82
83
84
# Arquivo 'lib/mongo/socket.rb', linha 82

def opções
  @opções
end

#soqueteSoquete (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o soquete O soquete encapsulado.

Retorna:

  • (Soquete)

    soquete O soquete encapsulado.

Desde:

  • 2.0.0



79
80
81
# Arquivo 'lib/mongo/socket.rb', linha 79

def soquete
  @socket
end

#timeoutFlutuante (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna timeout O timeout do soquete.

Retorna:

  • (Flutuante)

    timeout O tempo limite do soquete.

Desde:

  • 2.0.0



85
86
87
# Arquivo 'lib/mongo/socket.rb', linha 85

def timeout
  @timeout
end

Detalhes do método de instância

#vivo?true, false

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Obsoleto.

Usa #connectable? na conexão.

A conexão do soquete está ativa?

Exemplos:

O soquete está vivo?

socket.alive?

Retorna:

  • (verdadeiro, falso)

    Se o soquete estiver ativo.

Desde:

  • 2.0.0



146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# Arquivo 'lib/mongo/socket.rb', linha 146

def alive?
  sock_arr = [ @socket ]
  se Kernel.selecione(sock_arr, nada, sock_arr, 0)
    # O eof? a chamada deve retornar imediatamente desde selecione
    # indicado que o soquete é legível. No entanto, se @socket for um TLS
    # soquete, eof? pode bloquear de qualquer maneira - consulte RUBY-2140.
    começar
      Tempo-limite.timeout(0.1) fazer
        eof?
      end
    salvar ::Tempo-limite::Erro
      true
    end
  mais
    true
  end
end

#closetrue

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Feche o soquete.

Exemplos:

Feche o soquete.

socket.close

Retorna:

  • (verdadeiro)

    Sempre verdadeiro.

Desde:

  • 2.0.0



172
173
174
175
176
177
178
179
180
181
182
# Arquivo 'lib/mongo/socket.rb', linha 172

def Fechar
  começar
    # Às vezes, parece que o fecho pode esperar por um longo tempo
    ::Tempo-limite.timeout(5) fazer
      @socket&.Fechar
    end
  salvar StandardError
    #Silencie todos os erros
  end
  true
end

#conectável?verdadeiro

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Obsoleto.

Apenas para compatibilidade com versões anteriores, não use.

Retorna:

  • (verdadeiro)

    Sempre verdadeiro.

Desde:

  • 2.0.0



271
272
273
# Arquivo 'lib/mongo/socket.rb', linha 271

def conectável?
  true
end

#connection_addressEndereço

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o endereço da conexão que criou esse soquete.

Retorna:

  • (Endereço)

    Endereço da conexão que criou este soquete.

Desde:

  • 2.0.0



90
91
92
# Arquivo 'lib/mongo/socket.rb', linha 90

def connection_address
  opções[:connection_address]
end

#connection_generationInteiro

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna a geração da conexão (para conexões sem monitoramento) que criou esse soquete.

Retorna:

  • (Inteiro)

    Geração da conexão (para conexões não monitoradas) que criou esse soquete.

Desde:

  • 2.0.0



98
99
100
# Arquivo 'lib/mongo/socket.rb', linha 98

def connection_generação
  opções[:connection_generação]
end

#eof?Booleano

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Testa se este soquete atingiu EOF. Usado principalmente para verificações de vida.

Retorna:

  • (Booleano)

Desde:

  • 2.0.5



260
261
262
263
264
# Arquivo 'lib/mongo/socket.rb', linha 260

def eof?
  @socket.eof?
salvar IOError, SystemCallError
  true
end

#get(*args) ➤ Object

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Os delegados chegam ao soquete subjacente.

Exemplos:

Obtenha a próxima linha.

socket.gets(10)

Parâmetros:

  • Args (Array<Object>)

    Os argumentos a serem repassados.

Retorna:

  • (Objeto)

    Os bytes retornados.

Desde:

  • 2.0.0



194
195
196
197
198
# Arquivo 'lib/mongo/socket.rb', linha 194

def obtém(*Args)
  map_Exceptions fazer
    @socket.obtém(*Args)
  end
end

#monitor?verdadeiro | false

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna se esse soquete foi criado por uma conexão de monitoramento.

Retorna:

  • (verdadeiro | falso)

    Se esse soquete foi criado por uma conexão de monitoramento.

Desde:

  • 2.0.0



106
107
108
# Arquivo 'lib/mongo/socket.rb', linha 106

def monitorar?
  !!opções[:monitor]
end

#pipeIO

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

escute durante a chamar do sistema select ao ler do soquete.

Retorna:

  • (IO)

    O descritor de arquivo para o final de leitura do pipe para

Desde:

  • 2.0.0



113
114
115
# Arquivo 'lib/mongo/socket.rb', linha 113

def pipe
  opções[:pipe]
end

#read(comprimento, socket_timeout: nil, tempo limite: nil) ➤ Objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Irá ler todos os dados da tomada para o número de bytes fornecido. Se nenhum dado for retornado, uma exceção será gerada.

Exemplos:

Leia todos os dados solicitados do soquete.

socket.read(4096)

Parâmetros:

  • Tamanho (Inteiro)

    O número de bytes a serem lidos.

  • socket_timeout (Numérico) (padrão para: nil)

    O timeout a ser usado para cada leitura de chunk, mutuamente exclusivo para timeout.

  • timeout (Numérico) (padrão para: nil)

    O tempo limite total para toda a operação de leitura, mutuamente exclusivo para socket_timeout.

Retorna:

  • (Objeto)

    Os dados do soquete.

Aumenta:

  • (Mongo::SocketError)

    Se nem todos os dados forem retornados.

Desde:

  • 2.0.0



217
218
219
220
221
222
223
224
225
# Arquivo 'lib/mongo/socket.rb', linha 217

def ler(Tamanho, socket_timeout: nada, timeout: nada)
  aumentar ArgumentError, 'Tanto o tempo limite quanto o socket_timeout não podem ser definidos ' se !socket_timeout.nada? && !timeout.nada?

  se !socket_timeout.nada? || timeout.nada?
    read_without_timeout(Tamanho, socket_timeout)
  mais
    read_with_timeout(Tamanho, timeout)
  end
end

#readbyte ➤ Objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Leia um único byte do soquete.

Exemplos:

Leia um único byte.

socket.readbyte

Retorna:

  • (Objeto)

    O byte de leitura.

Desde:

  • 2.0.0



235
236
237
238
239
# Arquivo 'lib/mongo/socket.rb', linha 235

def readbyte
  map_Exceptions fazer
    @socket.readbyte
  end
end

#resumostring

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna um resumo legível por humanos do soquete para depuração.

Retorna:

  • (string)

    Resumo legível por humanos do soquete para depuração.

Desde:

  • 2.0.0



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Arquivo 'lib/mongo/socket.rb', linha 120

def Resumo
  fileno = começar
    @socket&.fileno
  salvar StandardError
    '<no socket> '
  end
  se monitorar?
    indicador = se opções[:push]
                  'pm'
                mais
                  'm'
                end
    "#{connection_address};#{connector};fd=#{fileno}"
  mais
    "#{connection_address};c:#{connection_generation};fd=#{fileno}"
  end
end

#write(*args, timeout: nil) ➤ Inteiro

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Escreve dados na instância de soquete.

Parâmetros:

  • Args (Array<Object>)

    Os dados a serem gravados.

  • timeout (Numérico) (padrão para: nil)

    O tempo limite total para toda a operação de gravação.

Retorna:

  • (Inteiro)

    O comprimento dos bytes gravados no soquete.

Aumenta:

Desde:

  • 2.0.0



251
252
253
254
255
# Arquivo 'lib/mongo/socket.rb', linha 251

def escrever(*Args, timeout: nada)
  map_Exceptions fazer
    do_write(*Args, timeout: timeout)
  end
end