类:Mongo::Socket::TCP Private
- 继承:
-
Mongo::Socket
- 对象
- Mongo::Socket
- Mongo::Socket::TCP
- 定义于:
- lib/ Mongo/socket/tcp.rb
Overview
此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。
TCP 套接字的包装器。
常量摘要
从Mongo::Socket继承的常量
SSL_ERROR 、 TIMEOUT_ERROR 、 TIMEOUT_PACK 、 WRITE_CHUNK_SIZE
实例属性摘要折叠
-
#主机⇒ string
只读
private
托管要连接到的主机。
-
# port ⇒ Integer
只读
private
端口 要连接的端口。
从Mongo::Socket继承的属性
#family 、 #options 、 #socket 、 #timeout
实例方法摘要折叠
-
# connect!⇒ TCP
private
建立套接字连接。
- # connect_with_timeout (sockaddr, connect_timeout) ⇒ 对象 private
- # connect_ without_timeout (sockaddr) ⇒ 对象 private
-
#initialize (托管, port, timeout, family, options = {}) ⇒ TCP
构造函数
private
初始化新的 TCP 套接字。
从Mongo::Socket继承的方法
#alive? 、 #close 、 #connectable? 、 #connection_address 、 #connection_Generation 、 #eof? 、 #gets 、 #monitor? 、 #read 、 #readbyte 、 #summary 、 #write
构造函数详情
#initialize (托管, port, timeout, family, options = {}) ⇒ TCP
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
初始化新的 TCP 套接字。
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/ Mongo/socket/tcp.rb', 第 48 行 def 初始化(主机, 端口, 超时, 家庭情况, = {}) if 家庭情况.nil? 提高 ArgumentError, ' family must bespecified ' end 超(超时, ) @host, @port = 主机, 端口 @family = 家庭情况 @socket = ::套接字.new(家庭情况, SOCK_STREAM, 0) 开始 (@socket) 连接! 救援 @socket.关闭 提高 end end |
实例属性详细信息
#主机⇒ string (只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回托管要连接的托管。
66 67 68 |
# File 'lib/ Mongo/socket/tcp.rb', 第 66 行 def 主机 @host end |
# port ⇒ Integer (readonly)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回 port 要连接的端口。
69 70 71 |
# File 'lib/ Mongo/socket/tcp.rb', 第 69 行 def 端口 @port end |
实例方法详细信息
# connect!⇒ TCP
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
注意:
此方法通过在内部设置套接字来更改对象。
建立套接字连接。
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/ Mongo/socket/tcp.rb', 第 83 行 def 连接! 套接字.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) sockaddr = ::套接字.pack_sockaddr_in(端口, 主机) connect_timeout = [:connect_timeout] map_Exceptions do if connect_timeout && connect_timeout != 0 connect_with_timeout(sockaddr, connect_timeout) else connect_ without_timeout(sockaddr) end end self end |
# connect_with_timeout (sockaddr, connect_timeout) ⇒ 对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/ Mongo/socket/tcp.rb', 第 103 行 def connect_with_timeout(sockaddr, connect_timeout) if connect_timeout <= 0 提高 错误::SocketTimeoutError, " 套接字花了 #{ connect_timeout } 秒进行连接 " end 截止日期 = Utils.monotic_time + connect_timeout 开始 套接字.connect_nonblock(sockaddr) 救援 IO::waitWritable select_timeout = 截止日期 - Utils.monotic_time if select_timeout <= 0 提高 错误::SocketTimeoutError, " 套接字花了 #{ connect_timeout } 秒进行连接 " end if IO.SELECT(nil, [套接字], nil, select_timeout) 重试 else 套接字.关闭 提高 错误::SocketTimeoutError, " 套接字花了 #{ connect_timeout } 秒进行连接 " end 救援 Errno::EICON # 套接字已连接,无需执行更多操作 end end |
# connect_ without_timeout (sockaddr) ⇒ 对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
98 99 100 |
# File 'lib/ Mongo/socket/tcp.rb', 第 98 行 def connect_ without_timeout(sockaddr) 套接字.连接(sockaddr) end |