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

継承:
ConnectionCommon すべて表示
次のことが含まれます。
ログ記録可能
定義:
lib/mongo/ サーバー/monitor/ connection.rb

Overview

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

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

以来

  • 2.0.0

定数の概要

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 浮動小数

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

次の値が発生します。

  • (ArgumentError)

以来

  • 2.0.0



56
57
58
59
60
61
62
63
64
65
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 56

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

  @socket = nil
  @pid = プロセス.pid
  @compressor = nil
  @hello_ok = false
end

インスタンス属性の詳細

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

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

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

次の値を返します。

以来

  • 2.0.0



71
72
73
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 71

デフォルト address
  @address
end

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

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

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

次の値を返します。

  • ハッシュ

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

以来

  • 2.0.0



68
69
70
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 68

デフォルト options
  @options
end

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

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

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

次の値を返します。

  • (整数)

    server_ connection_id サーバー接続 ID。

以来

  • 2.0.0



87
88
89
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 87

デフォルト server_ connection_id
  @server_ connection_id
end

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

#check_documentBSON::Document

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

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

次の値を返します。

  • BSON::Document

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

以来

  • 2.0.0



224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 224

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

#接続します 。 = true

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

注:

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

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

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

例:

ホストに接続します。

connection.connect!

次の値を返します。

  • ( true )

    接続が成功した場合。

次の値が発生します。

  • (ArgumentError)

以来

  • 2.0.0



151
152
153
154
155
156
157
158
159
160
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 151

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

  @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



176
177
178
179
180
181
182
183
184
185
186
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 176

デフォルト 切断します。(_options = nil)
  場合 ソケット
    begin
      ソケット.閉じる
    ヘルプ 標準エラー
      nil
    end
    @socket = nil
  end
  true
end

#dispatch(message) ⇒ Protocol::Message

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

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

パラメーター:

次の値を返します。

以来

  • 2.0.0



94
95
96
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 94

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

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

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

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

パラメーター:

  • バイト ( string )

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

  • ops ハッシュ

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

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

  • :read_socket_timeout 数値

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

次の値を返します。

以来

  • 2.0.0



106
107
108
109
110
111
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 106

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

#handshake!BSON::Document

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

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

次の値を返します。

  • BSON::Document

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

次の値が発生します。

  • Mongo::Error

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

以来

  • 2.0.0



193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 193

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

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

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

パラメーター:

  • ops ハッシュ

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

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

  • :socket_timeout 数値

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

次の値が発生します。

  • (ArgumentError)

以来

  • 2.0.0



125
126
127
128
129
130
131
132
133
134
135
136
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 125

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

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

# socket_timeout =浮動小数点数

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

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

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

次の値を返します。

  • 浮動小数

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

以来

  • 2.4.3



82
83
84
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 82

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

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

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

次の値が発生します。

  • (ArgumentError)

以来

  • 2.0.0



113
114
115
116
117
118
119
120
121
# ファイル 'lib/mongo/ サーバー/monitor/ connection.rb', 行 113

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

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