Classe: Mongo::Socket::TCP Private
- Herda:
-
Mongo::Socket
- Objeto
- Mongo::Socket
- Mongo::Socket::TCP
- Definido em:
- lib/mongo/socket/tcp.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.
Encapsulador para soquetes TCP.
Resumo constante
Constantes herdadas de Mongo::Socket
SSL_ERROR, TIMEOUT_ERROR, TIMEOUT_PACK, WRITE_CHUNK_SIZE
Recolhimento do Resumo do atributo de instância
-
#host ➤ string
Somente leitura
privado
Host O host ao qual se conectar.
-
#porta ➤ Inteiro
Somente leitura
privado
Porta A porta à qual se conectar.
Atributos herdados de Mongo::Socket
#family, #options, #socket, #timeout
Recolhimento do Resumo do método de instância
-
#connect! ➤ TCP
privado
Estabelece uma conexão de soquete.
- #connect_with_timeout(sockaddr, connect_timeout) ➤ Objeto privado
- #connect_without_timeout(sockaddr) ➤ Objeto privado
-
#inicializar(host, porta, tempo limite, família, opções = {}) ➤ TCP
construtor
privado
Inicia um novo soquete TCP.
Métodos herdados do Mongo::Socket
#alive?, #close, #connectable?, #connection_address, #connection_generation , #eof ?, #gets, #monitor?, #read, #readbyte, #summary, #write
Detalhes do construtor
#inicializar(host, porta, tempo limite, família, opções = {}) ➤ TCP
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.
Inicia um novo soquete TCP.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 48 def inicializar(Anfitrião, Porta, timeout, família, = {}) se família.nada? aumentar ArgumentError, ' afamília deve ser especificada' end super(timeout, ) @host, @port = Anfitrião, Porta @family = família @socket = ::Soquete.Novo(família, SOCK_STREAM, 0) começar (@socket) Conecte-se! salvar @socket.Fechar aumentar end end |
Detalhes do atributo da instância
#host ➤ string (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 host O host ao qual se conectar.
66 67 68 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 66 def Anfitrião @host end |
#porta ➤ inteiro (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 porta A porta à qual se conectar.
69 70 71 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 69 def Porta @port end |
Detalhes do método de instância
#connect! ➤ TCP
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.
Este método muta o objeto definindo o soquete internamente.
Estabelece uma conexão de soquete.
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 83 def Conecte-se! soquete.setsockopt(IPPROTO_TCP, TCP_NODELEY, 1) sockaddr = ::Soquete.pack_sockaddr_in(Porta, Anfitrião) connect_timeout = [:connect_timeout] map_Exceptions fazer se connect_timeout && connect_timeout != 0 connect_with_timeout(sockaddr, connect_timeout) mais connect_without_timeout(sockaddr) end end auto end |
#connect_with_timeout(sockaddr, connect_timeout) ➤ 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.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 103 def connect_with_timeout(sockaddr, connect_timeout) se connect_timeout <= 0 aumentar Erro::SocketTimeoutError, "O soquete levou mais de #{connect_timeout} segundos para conectar" end prazo = Utilidades.monotonic_time + connect_timeout começar soquete.connect_nonblock(sockaddr) salvar IO::WaitWritable select_timeout = prazo - Utilidades.monotonic_time se select_timeout <= 0 aumentar Erro::SocketTimeoutError, "O soquete levou mais de #{connect_timeout} segundos para conectar" end se IO.selecione(nada, [soquete], nada, select_timeout) tentar novamente mais soquete.Fechar aumentar Erro::SocketTimeoutError, "O soquete levou mais de #{connect_timeout} segundos para conectar" end salvar Errno::EISCONN # O soquete está conectado, nada mais a fazer end end |
#connect_without_timeout(sockaddr) ➤ 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.
98 99 100 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 98 def connect_without_timeout(sockaddr) soquete.Conecte(sockaddr) end |