类:Mongo::Socket Private

继承:
对象
  • 对象
显示全部
包括:
Socket::Constants
定义于:
构建/ruby-driver-v2.19/lib/ mongo /socket.rb
构建/ruby-driver-v2.19/lib/ mongo /socket/ssl.rb,
构建/ruby-driver-v2.19/lib/ mongo /socket/tcp.rb,
构建/ruby-driver-v2.19/lib/ mongo /socket/unix.rb,
构建/ruby-driver-v2.19/lib/ mongo /socket/ocsp_cache.rb,
构建/ruby-driver-v2.19/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 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第69行

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

实例属性详细信息

# family整数(只读)

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

返回 family 主机族的类型。

返回:

  • ( Integer )

    family托管家庭的类型。

由于:

  • 2.0.0



75
76
77
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第75行

def 家庭情况
  @family
end

# options哈希(只读)

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

返回 选项。

返回:

  • (哈希)

    选项。

由于:

  • 2.0.0



81
82
83
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第81行

def 选项
  @options
end

# socket套接字(只读)

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

返回 socket 包装的套接字。

返回:

  • (套接字)

    socket 包装的套接字。

由于:

  • 2.0.0



78
79
80
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第78行

def 套接字
  @socket
end

# timeout浮点(只读)

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

返回 timeout 套接字超时时间。

返回:

  • (浮点)

    timeout 套接字超时。

由于:

  • 2.0.0



84
85
86
# File 'build/Ruby-driver-v 2.19 /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 'build/Ruby-driver-v 2.19 /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 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第160行

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

#可连接?true

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

已弃用。

仅出于向后兼容目的,请勿使用。

返回:

  • ( true )

    始终为 true。

由于:

  • 2.0.0



262
263
264
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第262行

def 可连接?
  true
end

# connection_address地址

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

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

返回:

  • (地址)

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

由于:

  • 2.0.0



89
90
91
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第89行

def connection_address
  选项[:connection_address]
end

# connection_Generation =" Integer "(整数)

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

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

返回:

  • ( Integer )

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

由于:

  • 2.0.0



97
98
99
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第97行

def connection_Generation
  选项[:connection_Generation]
end

# eof?布尔

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

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

返回:

  • 布尔值

由于:

  • 2.0.5



251
252
253
254
255
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第251行

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 'build/Ruby-driver-v 2.19 /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 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第105行

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

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

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

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

例子:

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

socket.read(4096)

参数:

  • 长度 ( Integer )

    要读取的字节数。

  • 超时 数字 (默认为: nil

    用于数据块每个数据段的超时时间。

返回:

  • ( Object )

    来自套接字的数据。

引发:

  • ( Mongo::SocketError )

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

由于:

  • 2.0.0



202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第202行

def (长度, timeout: nil)
  map_Exceptions do
    数据 = read_from_socket(长度, timeout: 超时)
    除非 (数据.长度 > 0 || 长度 == 0)
      提高 IOError, 预计读取 > 0个字节,但实际读取了0个字节
    end
    while 数据.长度 < 长度
      数据段 = read_from_socket(长度 - 数据.长度, timeout: 超时)
      除非 (数据段.长度 > 0 || 长度 == 0)
        提高 IOError, 预计读取 > 0个字节,但实际读取了0个字节
      end
      数据 << 数据段
    end
    数据
  end
end

# readbyte对象

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

从套接字读取单个字节。

例子:

读取单个字节。

socket.readbyte

返回:

  • ( Object )

    读取的字节。

由于:

  • 2.0.0



227
228
229
230
231
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第227行

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 'build/Ruby-driver-v 2.19 /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

# write (*args) ⇒整数

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

将数据写入套接字实例。

参数:

  • args ( Array<Object> )

    要写入的数据。

返回:

  • ( Integer )

    写入套接字的字节长度。

引发:

由于:

  • 2.0.0



242
243
244
245
246
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket.rb', 第242行

def (*args)
  map_Exceptions do
    do_write(*args)
  end
end