类:Mongo::Server::ConnectionBase

继承:
ConnectionCommon 显示全部
扩展方式:
可转发
包括:
Monitoring::Publishable
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/server/connection_base.rb

Overview

注意:

尽管该模块的方法是公共 API 的一部分,但这些方法是在此模块上定义的,而不是在包含该模块的类上定义的,因此,公共 API 不属于该模块的一部分。

该类封装了常见的连接功能。

由于:

  • 2.0.0

直接已知子类

Connection , PendingConnection

常量摘要折叠

DEFAULT_MAX_BSON_OBJECT_SIZE =

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

如果服务器的 hello 响应不包含 maxBsonObjectSize 字段,则用户提供的文档在序列化时可能占用的最大允许大小(以字节为单位)。

发送到服务器的命令可能会超出此大小 MAX_BSON_COMMAND_OVERHEAD。

由于:

  • 2.0.0

16777216
MAX_BSON_COMMAND_OVERHEAD =

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

命令数据(即 将完整命令序列化为 BSON 时,驱动程序添加到命令文档中的字段(而不是用户提供的文档)。

由于:

  • 2.0.0

16384
REDUCED_MAX_BSON_SIZE =

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

由于:

  • 2.0.0

2097152

Loggable中包含的常量

Loggable::PREFIX

实例属性摘要折叠

包含在Monitoring::Publishable 中的属性

#monitoring

ConnectionCommon继承的属性

#compressor , #pid

实例方法摘要折叠

Monitoring::Publishable 中包含的方法

#publish_cmap_event#publish_event#publish_sdam_event

Loggable中包含的方法

#log_debug#log_error#log_ Fatal#log_info#log_warn#logger

ConnectionCommon继承的方法

#connected? , #handshake_command , #handshake_document

实例属性详细信息

# descriptionServer::Description (readonly)

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

注意:

尚未连接(握手和身份验证,如果需要身份验证)的连接对象没有描述。 在握手和身份验证时,驱动程序必须使用全局默认值,特别是不要假设特定连接的属性与针对同一地址的其他连接的属性相同(因为另一端的服务器可能已关闭,并且可能会启动不同的服务器版本)。

返回此连接的服务器描述,该描述派生自对此连接执行的握手的 hello 响应。

返回:

由于:

  • 2.0.0



82
83
84
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_base.rb', 第82行

def 描述
  @description
end

# options哈希(只读)

返回 options 传入的选项。

返回:

  • (哈希)

    options 传入的选项。

由于:

  • 2.0.0



53
54
55
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_base.rb', 第53行

def 选项
  @options
end

# serverMongo::Address (readonly)

返回要连接到的地址。

返回:

由于:

  • 2.0.0



58
59
60
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_base.rb', 第58行

def server
  @server
end

实例方法详细信息

# app_metadata对象

由于:

  • 2.0.0



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_base.rb', 第107行

def 
  @app_metadata ||= 开始
    相同 = true
    AppMetadata::AUTH_OPTION_KEYS. do |key|
      if @server.选项[key] != 选项[key]
        相同 = false
        中断
      end
    end
    if 相同
      @server.
    else
      AppMetadata.new(选项.合并(merge)(目的: @server..用途))
    end
  end
end

#dispatch(messages, context, options = {}) ⇒ Protocol::Message | nil

注意:

此方法称为调度,因为“send”是所有对象上的核心 Ruby 方法。

注意:

为了向后兼容,此方法接受数组形式的消息。 但是,每次调用必须给出一条消息。

向该连接分派单条消息。 如果该消息需要响应,则会返回回复。

例子:

分派消息。

connection.dispatch([ insert ])

参数:

  • 消息(Message) ( Array<Message> )

    包含要调度的消息的单元素数组。

  • 上下文 ( Operation::Context )

    操作上下文。

  • 选项 哈希 (默认为: {}

选项哈希 ( options ):

  • :deserialize_as_bson 布尔值

    是否尽可能使用 BSON 对象代替原生 Ruby 类型来反序列化对此消息的响应。

返回:

引发:

由于:

  • 2.0.0



150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_base.rb', 第150行

def 调度(消息(Message), 上下文, 选项 = {})
  # 监控代码未正确处理多条消息,
  # 并且驱动程序内部不会在以下位置发送多条消息
  # 一次。 因此暂时禁止使用多消息。
  if 消息(Message).长度 != 1
    提高 ArgumentError, '一次只能发送一条消息'
  end
  if 描述.未知?
    提高 错误::内部驱动程序错误, " 无法在描述未知的连接上分派消息: # { description .inspect } "
  end
  message = 消息(Message).first
  交付(message, 上下文, 选项)
end

#生成整数 | nil

创建此连接的连接池代。 可能为零。

返回:

  • ( Integer | nil )

    连接池生成。

由于:

  • 2.0.0



100
101
102
103
104
105
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_base.rb', 第100行

def 生成
  # 如果连接的是负载均衡器,则设置 @Generation
  # 握手完成后。 如果连接到另一台服务器
  # 类型,生成在连接创建期间指定。
  @Generation || 选项[:Generation]
end

# service_id =" nil |对象

返回 服务 ID(如果有)。

返回:

  • ( nil | Object )

    服务 ID(如果有)。

由于:

  • 2.0.0



92
93
94
# File 'build/Ruby-driver-v 2.19 /lib/mongo/server/connection_base.rb', 第92行

def service_id
  描述&。service_id
end