Classe: Mongo::Socket::TCP Private
- Herda:
-
Soquete
- Objeto
- Soquete
- 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.
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.
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.
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.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 45 def inicializar(Anfitrião, Porta, timeout, família, = {}) aumentar ArgumentError, ' afamília deve ser especificada' se família.nada? super(timeout, ) @host, @port = Anfitrião, Porta @family = família @socket = ::Soquete.Novo(família, SOCK_STREAM, 0) começar (@socket) Conecte-se! salvar StandardError @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.
62 63 64 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 62 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.
65 66 67 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 65 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.
79 80 81 82 83 84 85 86 87 88 89 90 91 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 79 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.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 99 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.
94 95 96 |
# Arquivo 'lib/mongo/socket/tcp.rb', linha 94 def connect_without_timeout(sockaddr) soquete.Conecte(sockaddr) end |