类:Mongo::Socket Private

继承:
对象
  • 对象
显示全部
包括:
Socket::Constants
定义于:
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

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

提供有关套接字的附加数据以供驱动程序使用。

由于:

  • 2.0.0

直接已知子类

SSL, TCP, Unix

在命名空间下定义

模块: OcspCache 类: OcspVerifier , SSL , TCP , Unix

常量摘要折叠

SSL_ERROR =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

已弃用。

TLS 相关异常的错误消息。

由于:

  • 2.0.0

 MongoDB 可能未配置 TLS 支持.冻结
TIMEOUT_ERROR =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

已弃用。

有关套接字调用超时的错误消息。

由于:

  • 2.0.0

'套接字请求超时'.冻结
TIMEOUT_PACK =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

用于超时的包指令。

由于:

  • 2.0.0

' l_ 2 '.冻结
WRITE_CHUNK_SIZE =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

以该大小的数据段将数据写入套接字。

由于:

  • 2.0.0

65536

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize (timeout, options) ⇒套接字

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

初始化通用套接字属性。

参数:

  • 超时 (浮点)

    套接字超时值。

  • 选项 (哈希)

    选项。

选项哈希 ( options ):

  • :connect_timeout 浮点

    连接超时。

  • :connection_address 地址

    创建此套接字的连接地址。

  • :connection_Generation 整数

    创建此套接字的连接(针对非监控连接)的生成。

  • :monitor ( true | false )

    此套接字是否由监控连接创建。

由于:

  • 2.0.0



69
70
71
72
# File 'lib/ Mongo/socket.rb', 第 69 行

def 初始化(超时, 选项)
  @timeout = 超时
  @options = 选项
end

实例属性详细信息

# family整数(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 family 主机族的类型。

返回:

  • ( Integer )

    family托管家庭的类型。

由于:

  • 2.0.0



75
76
77
# File 'lib/ Mongo/socket.rb', 第 75 行

def 家庭情况
  @family
end

# options哈希(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 选项。

返回:

  • (哈希)

    选项。

由于:

  • 2.0.0



81
82
83
# File 'lib/ Mongo/socket.rb', 第 81 行

def 选项
  @options
end

# socket套接字(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 socket 包装的套接字。

返回:

  • (套接字)

    socket 包装的套接字。

由于:

  • 2.0.0



78
79
80
# File 'lib/ Mongo/socket.rb', 第 78 行

def 套接字
  @socket
end

# timeout浮点(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 timeout 套接字超时时间。

返回:

  • (浮点)

    timeout 套接字超时。

由于:

  • 2.0.0



84
85
86
# File 'lib/ Mongo/socket.rb', 第 84 行

def 超时
  @timeout
end

实例方法详细信息

#还活着?true , false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

已弃用。

使用#connectable? 在连接上。

套接字连接是否处于活动状态?

例子:

套接字还处于活动状态吗?

socket.alive?

返回:

  • ( true , false )

    如果套接字处于活动状态。

由于:

  • 2.0.0



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/ Mongo/socket.rb', 第 134 行

def alive?
  sock_arr = [ @socket ]
  if Kernel::SELECT(sock_arr, nil, sock_arr, 0)
    # eof?调用应该立即返回,因为 select
    # 表示套接字可读。 但是,如果 @socket 是 TLS
    # socket, eof?无论如何都可以阻塞 - 请参阅 RUBY- 2140 。
    开始
      超时.超时(0.1) do
        eof?
      end
    救援 ::超时::错误
      true
    end
  else
    true
  end
end

# closetrue

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

关闭套接字。

例子:

关闭套接字。

socket.close

返回:

  • ( true )

    始终为 true。

由于:

  • 2.0.0



160
161
162
163
164
165
166
167
168
169
170
# File 'lib/ Mongo/socket.rb', 第 160 行

def 关闭
  开始
    # 有时,关闭调用可能会挂起很长时间
    ::超时.超时(5) do
      @socket.关闭
    end
  救援
    # 静默所有错误
  end
  true
end

#可连接?true

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

已弃用。

仅为了向后兼容,请勿使用。

返回:

  • ( true )

    始终为 true。

由于:

  • 2.0.0



260
261
262
# File 'lib/ Mongo/socket.rb', 第 260 行

def 可连接?
  true
end

# connection_address地址

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回创建此套接字的连接的地址。

返回:

  • (地址)

    创建此套接字的连接地址。

由于:

  • 2.0.0



89
90
91
# File 'lib/ Mongo/socket.rb', 第 89 行

def connection_address
  选项[:connection_address]
end

# connection_Generation =" Integer "(整数)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回创建此套接字的连接(对于非监控连接)的生成。

返回:

  • ( Integer )

    创建此套接字的连接(针对非监控连接)的生成。

由于:

  • 2.0.0



97
98
99
# File 'lib/ Mongo/socket.rb', 第 97 行

def connection_Generation
  选项[:connection_Generation]
end

# eof?布尔

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

测试此套接字是否已到达 EOF。 主要用于活性检查。

返回:

  • 布尔值

由于:

  • 2.0.5



249
250
251
252
253
# File 'lib/ Mongo/socket.rb', 第 249 行

def eof?
  @socket.eof?
救援 IOError, SystemCallError
  true
end

#gets (*args) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

委托访问底层套接字。

例子:

获取下一行。

socket.gets(10)

参数:

  • args ( Array<Object> )

    要传递的参数。

返回:

  • ( Object )

    返回的字节数。

由于:

  • 2.0.0



182
183
184
185
186
# File 'lib/ Mongo/socket.rb', 第 182 行

def 获取(*args)
  map_Exceptions do
    @socket.获取(*args)
  end
end

#监控?true | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回此套接字是否由监控连接创建。

返回:

  • ( true | false )

    此套接字是否由监控连接创建。

由于:

  • 2.0.0



105
106
107
# File 'lib/ Mongo/socket.rb', 第 105 行

def 监控?
  !!选项[:monitor]
end

# read (length, socket_timeout: nil, timeout: nil) ⇒ 对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

将从套接字读取指定字节数的所有数据。 如果没有返回数据,则会引发异常。

例子:

从套接字读取所有请求的数据。

socket.read(4096)

参数:

  • 长度 ( Integer )

    要读取的字节数。

  • socket_timeout 数字 (默认为: nil

    用于读取每个数据块的超时时间,与 timeout 互斥。

  • 超时 数字 (默认为: nil

    整个读取操作的总超时时间,与 socket_timeout 互斥。

返回:

  • ( Object )

    来自套接字的数据。

引发:

  • ( Mongo::SocketError )

    如果不是,则返回所有数据。

由于:

  • 2.0.0



205
206
207
208
209
210
211
212
213
214
# File 'lib/ Mongo/socket.rb', 第 205 行

def (长度, socket_timeout: nil, timeout: nil)
  if !socket_timeout.nil? && !超时.nil?
    提高 ArgumentError, ' 不能同时设立timeout 和 socket_timeout '
  end
  if !socket_timeout.nil? || 超时.nil?
    read_ without_timeout(长度, socket_timeout)
  else
    read_with_timeout(长度, 超时)
  end
end

# readbyte对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

从套接字读取单个字节。

例子:

读取单个字节。

socket.readbyte

返回:

  • ( Object )

    读取的字节。

由于:

  • 2.0.0



224
225
226
227
228
# File 'lib/ Mongo/socket.rb', 第 224 行

def readbyte
  map_Exceptions do
    @socket.readbyte
  end
end

#摘要string

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回用于调试的套接字的人类可读摘要。

返回:

  • ( string )

    用于调试的套接字摘要,用于人类可读。

由于:

  • 2.0.0



112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/ Mongo/socket.rb', 第 112 行

def 总结
  fileno = @socket&。fileno 救援 ' <no socket> ' || ' <no socket> '
  if 监控?
    指示器 = if 选项[:push]
      ' pm '
    else
      ' m '
    end
    " #{ connection_address } ; #{ subject } ;fd= #{ fileno } "
  else
    " #{ connection_address } ;c: #{ connection_Generation } ;fd= #{ fileno } "
  end
end

# 写入 (*args, timeout: nil) ⇒ Integer

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

将数据写入套接字实例。

参数:

  • args ( Array<Object> )

    要写入的数据。

  • 超时 数字 (默认为: nil

    整个写入操作的总超时时间。

返回:

  • ( Integer )

    写入套接字的字节长度。

引发:

由于:

  • 2.0.0



240
241
242
243
244
# File 'lib/ Mongo/socket.rb', 第 240 行

def (*args, timeout: nil)
  map_Exceptions do
    do_write(*args, timeout: 超时)
  end
end