クラス: Mongo::Server::MongoDB::Connection Private

継承:
ConnectionCommon すべて表示
次のことが含まれます。
ログ記録可能
定義:
build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb

Overview

このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。

このクラスは、モニター接続とその動作をモデル化します。

以来

  • 2.0.0

既知のサブクラスを直接確認

ProcessMongoDB::Connection

定数の概要

Loggableに含まれる定数

ログ可能::PRFIX

インスタンス属性の概要を折りたたむ

ConnectionCommonから継承される属性

#compressor, #pid

インスタンス メソッドの概要を折りたたむ

Loggableに含まれるメソッド

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

ConnectionCommonから継承されたメソッド

番号が接続されているかどうか#handsます。

コンストラクターの詳細

#初期化(アドレス、オプション = {}) =接続

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

モニタリング接続では認証されません。

指定されたオプションを使用して、指定されたターゲットアドレスに新しい接続オブジェクトを作成します。

コンストラクターは I/O を実行しません(したがって、ソケットもハンドシェイクも作成しません)。接続を呼び出します。 接続オブジェクトのメソッドを使用して、ネットワーク接続を作成します。

パラメーター:

  • address Mongo::Address

    接続のアドレス。

  • options ハッシュ (デフォルトは{}です)

    接続オプション。

オプション ハッシュ( options ):

  • :app_metadata Mongo::Server::MongoDB::AppMetadata

    ハンドシェイクに使用するメタデータ。 欠落している場合または nil の場合、ハンドシェイクは実行されません。 Mongo::Server::AppMetadata インスタンスも機能しますが、モニタリング接続のモニタリング ソケットでは認証が行われないため、サーバーとの SCRAM ネゴシエート::AppMetadata インスタンスを使用します。

  • :compressors 配列<String>

    使用する潜在的なコンプレッサーのリスト(優先順位順)。 ドライバーは、サーバーによってサポートされている最初のコンプレッサーを選択します。 現在、ドライバーは 'zstd'、'Snappy'、'zlib' のみをサポートしています。

  • :connect_timeout 浮動小数

    ネットワーク操作に使用するタイムアウト(秒単位)。 このタイムアウトは、名前が意味するものとは対照的に、接続呼び出しのみではなく、すべてのソケット操作に使用されます。

以来

  • 2.0.0



58
59
60
61
62
63
64
65
66
67
68
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行58

デフォルト 初期化(address, options = {})
  @address = address
  @options = options.dup.freeze
  ただし、 @app_metadata = options[:app_metadata]
    発生 ArgumentError, アプリ メタデータは必須 です
  end
  @socket = nil
  @pid = プロセス.pid
  @compressor = nil
  @hello_ok = false
end

インスタンス属性の詳細

アドレス= Mongo::Address (読み取り専用)

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

接続するアドレスを返します。

次の値を返します。

以来

  • 2.0.0



74
75
76
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行74

デフォルト address
  @address
end

オプション=ハッシュ(読み取り専用)

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

オプション で渡されたオプションを返します。

次の値を返します。

  • ハッシュ

    options オプションで渡されたオプション。

以来

  • 2.0.0



71
72
73
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行71

デフォルト options
  @options
end

# server_ connection_id =整数(読み取り専用)

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

Server_ connection_id サーバー接続 ID を返します。

次の値を返します。

  • (整数)

    server_ connection_id サーバー接続 ID。

以来

  • 2.0.0



90
91
92
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行90

デフォルト server_ connection_id
  @server_ connection_id
end

インスタンス メソッドの詳細

#check_documentBSON::Document

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

接続チェックに使用するドキュメントをビルドします。

次の値を返します。

  • BSON::Document

    接続チェックのためにサーバーに送信する必要があるドキュメント。

以来

  • 2.0.0



229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行229

デフォルト checkpoint_document
  server_api = @app_metadata.server_api || options[:server_api]
  doc = 場合 hello_ok? || server_api
    _doc = HELLO_DOC
    場合 server_api
      _doc = _doc.merge(Utils.transform_server_api(server_api))
    end
    _doc
  else
    Legacy_Hello_DOC
  end
  正しい圧縮状態を維持するには、# コンプレッサーを に設定する必要があります。
  サーバーの説明の # 。 Ruby- 2427を参照してください
  場合 compressors = options[:compressors]
    doc = doc.merge(圧縮: compressors)
  end
  doc
end

#接続します 。 = true

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

このメソッドは、以前にソケットが存在しなかった場合にソケットを設定することで接続クラスをミューテーションします。

ターゲット アドレスへのネットワーク接続を確立します。

接続がすでに確立されている場合、このメソッドは何も実行しません。

例:

ホストに接続します。

connection.connect!

次の値を返します。

  • ( true )

    接続が成功した場合。

以来

  • 2.0.0



158
159
160
161
162
163
164
165
166
167
168
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行158

デフォルト 接続します。
  場合 @socket
    発生 ArgumentError, 'モニタリング接続はすでに接続されている'
  end

  @socket = add_server_iagnostics 行う
    address.ソケット(socket_timeout, ssl_options.merge(
      connection_address: address, モニター: true))
  end
  true
end

#切断します。 (options = nil) = true

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

このメソッドは、閉じが成功した場合、ソケットを nil に設定して接続をミューテーションします。

注:

このメソッドは、 Server::Connections との互換性のためにオプション引数を受け入れます。 ただし、すべてのオプションは無視されます。

接続を切断します。

例:

ホストから切断します。

connection.disconnect!

次の値を返します。

  • ( true )

    切断が成功した場合。

以来

  • 2.0.0



184
185
186
187
188
189
190
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行184

デフォルト 切断します。(options = nil)
  場合 ソケット
    ソケット.閉じる ヘルプ nil
    @socket = nil
  end
  true
end

#dispatch(message) ⇒ Protocol::Message

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

メッセージを送信し、結果を返します。

パラメーター:

次の値を返します。

以来

  • 2.0.0



97
98
99
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行97

デフォルト ディスパッチ(メッセージ)
  ディスパッチ_バイト(メッセージ.直列化.to_s)
end

#dispatch_bytes(bytes, **opts) ⇒ Protocol::Message

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

事前にシリアル化されたメッセージを送信し、その結果を返します。

パラメーター:

  • バイト ( string )

    送信するシリアル化されたメッセージ。

  • ops ハッシュ

    カスタマイズ可能なオプションのセット

オプション ハッシュ( * Ops ):

  • :read_socket_timeout 数値

    各読み取り操作に使用するタイムアウト。

次の値を返します。

以来

  • 2.0.0



109
110
111
112
113
114
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行109

デフォルト ディスパッチ_バイト(バイト, **ops)
  write_bytes(バイト)
  read_ response(
    socket_timeout: ops[:read_socket_timeout],
  )
end

#handshake!BSON::Document

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

接続済みホストに ハンドシェイク コマンド を送信し、応答を検証します。

次の値を返します。

  • BSON::Document

    サーバーからの応答をハンドシェイク

次の値が発生します。

  • Mongo::Error

    ハンドシェイクが失敗した場合。

以来

  • 2.0.0



197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行197

デフォルト handshake!
  コマンド = handshake_command(
    handsake_document(
      @app_metadata,
      server_api: options[:server_api]
    )
  )
  ペイロード = コマンド.直列化.to_s
  メッセージ = ディスパッチ_バイト(ペイロード)
  結果 = 操作::結果.新着情報(メッセージ)
  結果.validate!
  応答 = 結果.ドキュメント.最初に
  set_compressor!(応答)
  set_hello_ok!(応答)
  @server_ connection_id = 応答[' connectionId ']
  応答
ヘルプ => 除外
  msg =  #{ address } とのハンドシェイクに失敗しました 」
  Utils.警告_bg_例外(msg, 除外,
    logger: options[:logger],
    log_prefix: options[:log_prefix],
    bg_error_backtrace: options[:bg_error_backtrace],
  )
  発生
end

# read_ response (**opts) =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

パラメーター:

  • ops ハッシュ

    カスタマイズ可能なオプションのセット

オプション ハッシュ( * Ops ):

  • :socket_timeout 数値

    各読み取り操作に使用するタイムアウト。

以来

  • 2.0.0



130
131
132
133
134
135
136
137
138
139
140
141
142
143
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行130

デフォルト read_ response(**ops)
  ただし、 接続されていますか?
    発生 ArgumentError, "接続されていない接続で読み取りを試みているとします#{自己} "
  end

  add_server_ connection_id 行う
    add_server_iagnostics 行う
      プロトコル::メッセージ.逆シリアル化(ソケット,
        プロトコル::メッセージ::MAX_MESSAGE_SIZE,
        nil,
        **ops)
    end
  end
end

# socket_timeout =浮動小数点数

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

監視ソケット タイムアウトを返します。

監視接続では、ソケット タイムアウト値として接続タイムアウト値が使用されることに注意してください。 詳細については、「 サーバー検出とモニタリング 」の仕様を参照してください。

次の値を返します。

  • 浮動小数

    ソケット タイムアウト(秒単位)。

以来

  • 2.4.3



85
86
87
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行85

デフォルト socket_timeout
  options[:connect_timeout] || サーバー::CONNECT_TIMEOUT
end

#write_bytes (バイト) =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

以来

  • 2.0.0



116
117
118
119
120
121
122
123
124
125
126
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server/monitor/ connection.rb', 行116

デフォルト write_bytes(バイト)
  ただし、 接続されていますか?
    発生 ArgumentError, "接続されていない接続でディスパッチしようといるとき
  end

  add_server_ connection_id 行う
    add_server_iagnostics 行う
      ソケット.書込み (write)(バイト)
    end
  end
end