Classe: Mongo::Socket Private

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
Soquete::Constantes
Definido em:
build/ruby-driver-v2.19/lib/mongo/socket.rb,
build/ruby-driver-v2.19/lib/mongo/socket/ssl.rb,
build/ruby-driver-v2.19/lib/mongo/socket/tcp.rb,
build/ruby-driver-v2.19/lib/mongo/socket/unix.rb,
build/ruby-driver-v2.19/lib/mongo/socket/ocsp_cache.rb,
build/ruby-driver-v2.19/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

Subclasses conhecidas diretas

SSL, TCP, Unix

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

' OMongoDB pode não ser configurado com suporte a TLS'.congelar
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

' Asolicitação de soquete atingiu o tempo limite'.congelar
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'.congelar
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

65536

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.

Desde:

  • 2.0.0



69
70
71
72
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 69

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



75
76
77
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 75

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



81
82
83
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 81

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



78
79
80
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 78

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



84
85
86
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 84

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



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 134

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



160
161
162
163
164
165
166
167
168
169
170
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 160

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
    #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.

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

Retorna:

  • (verdadeiro)

    Sempre verdadeiro.

Desde:

  • 2.0.0



262
263
264
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 262

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



89
90
91
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 89

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



97
98
99
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 97

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



251
252
253
254
255
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 251

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



182
183
184
185
186
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 182

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



105
106
107
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 105

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

#read(comprimento, 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.

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

    O timeout a ser usado para cada leitura de chunk.

Retorna:

  • (Objeto)

    Os dados do soquete.

Aumenta:

  • (Mongo::SocketError)

    Se nem todos os dados forem retornados.

Desde:

  • 2.0.0



202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 202

def ler(Tamanho, timeout: nada)
  map_Exceptions fazer
    de dados = read_from_socket(Tamanho, timeout: timeout)
    a menos que (de dados.Tamanho > 0 || Tamanho == 0)
      aumentar IOError, "Espera-se ler > 0 bytes, mas leia 0 bytes"
    end
    enquanto de dados.Tamanho < Tamanho
      chunk = read_from_socket(Tamanho - de dados.Tamanho, timeout: timeout)
      a menos que (chunk.Tamanho > 0 || Tamanho == 0)
        aumentar IOError, "Espera-se ler > 0 bytes, mas leia 0 bytes"
      end
      de dados << chunk
    end
    de dados
  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



227
228
229
230
231
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 227

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



112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 112

def Resumo
  fileno = @socket&.fileno salvar '<no socket> ' || '<no socket> '
  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) ➤ 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.

Retorna:

  • (Inteiro)

    O comprimento dos bytes gravados no soquete.

Aumenta:

Desde:

  • 2.0.0



242
243
244
245
246
# File 'build/ruby-driver-v2.19/lib/mongo/socket.rb', linha 242

def escrever(*Args)
  map_Exceptions fazer
    do_write(*Args)
  end
end