クラス: Mongo::Server::Connection

継承:
ConnectionBase すべて表示
次による拡張機能。
転送可能
次のことが含まれます。
ID監視::公開可能 、再試行可能
定義:
lib/mongo/ サーバー/ connection.rb

Overview

このクラスは、サーバーのソケット接続とその動作をモデル化します。

以来

  • 2.0.0

定数の概要の削減

PING =
非推奨。

サーバー選択の仕様が不要になりました。

ping コマンド。

以来

  • 2.1.0

{ ping: 1 }.freeze
PING_OP_MSG =
非推奨。

サーバー選択の仕様が不要になりました。

OP_MSG のpingコマンド

以来

  • 2.5.0

{ :ping => 1, '$db' => Database::管理者 }.freeze
PING_OP_MSG_MESSAGE =
非推奨。

サーバー選択の仕様が不要になりました。

OP_MSG としての ping メッセージ

以来

  • 2.5.0

プロトコル::Msg.新着情報([], {}, PING_OP_MSG)
PING_OP_MSG_BYTES =
非推奨。

サーバー選択の仕様が不要になりました。

ping OP_MSG メッセージ(未加工バイトとして)

以来

  • 2.5.0

PING_OP_MSG_MESSAGE.直列化.to_s.freeze

Loggableに含まれる定数

ログ可能::PRFIX

ConnectionBaseから継承された定数

Mongo::Server::ConnectionBase::DEFAULT_MAX_BSON_OBJECT_SIZEMongo::Server::ConnectionBase::MAX_BSON_COMMAND_OVERHEADMongo::Server::ConnectionBase::REDED_MAX_BSON_SIZE

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

Monitoring::Publishable

#monitoring

ConnectionBaseから継承される属性

#description#options#server

ConnectionCommonから継承される属性

#compressor, #pid

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

IDに含まれるメソッド

次が含まれます:

再試行可能な に含まれるメソッド

#read_worker#select_server#with_overload_retry#write_worker

から含まれるメソッド::public

#publish_cmap_event#publish_event#publish_sam_event

Loggableに含まれるメソッド

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

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

#app_metadata#dispatch#生成#service_id

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

#handsake_command#handshake_document

コンストラクターの詳細

#初期化(サーバー、オプション = {}) =接続

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

注:

接続は、サーバー外で直接インスタンス化されることは ありません 。

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

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

例:

接続を作成します。

Connection.new(server)

パラメーター:

  • サーバー Mongo::Server

    接続のサーバー。

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

    接続オプション。

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

  • : パイプ (IO)

    ソケットから読み取るときに選択システム呼び出し中にリッスンするパイプの読み取りエンドのファイル記述子。

  • : 生成 整数

    この接続の生成。 負荷分散モードでない場合にのみ、このオプションで生成を指定し、接続の作成時に接続プールの生成を指定する必要があります。 ロードバランシング モードでは、ハンドシェイクが完了した後に接続に生成が設定されます。

  • :server_api ハッシュ

    リクエストされたサーバー API バージョン。 このハッシュには、以下の項目を含めることができます。

    • :バージョン -- string
    • :strict --ブール値
    • :deprecation_errors --ブール値

以来

  • 2.0.0



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 90

デフォルト 初期化(サーバー, options = {})
  場合 サーバー.load_ balancer? & & options[: 生成]
    発生 ArgumentError, 'サーバーがロードバランサーである場合、生成を設定することはできません'
  end

  @id = サーバー.next_ connection_id
  @ global_id = 自己.クラス.next_id
  @monitoring = サーバー.モニタリング
  @options = options.freeze
  @server = サーバー
  @socket = nil
  @last_checkin = nil
  @auth_mechanism = nil
  @pid = プロセス.pid
  @ping_理由s = セット.新着情報

  public_cmap_event(
    モニタリング::イベント::Cmap::ConnectionCreed.新着情報(address, id)
  )
end

インスタンス属性の詳細

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

すべての接続にわたる場合、

次の値を返します。

  • (整数)

    接続用グローバル ID。 これは一意になります

以来

  • 2.0.0



124
125
126
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 124

デフォルト global_id
  @ global_id
end

ID整数(読み取り専用)

同じサーバー オブジェクトへの接続全体。

次の値を返します。

  • (整数)

    接続の ID。 これは一意になります

以来

  • 2.9.0



120
121
122
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 120

デフォルト id
  @id
end

# last_checkin =時間(読み取り専用)

接続がプールにチェックバックされた最後にチェックバックされた時刻を返します。

次の値を返します。

  • 時間

    接続がプールにチェックバックされた最後の時刻。

以来

  • 2.5.0



114
115
116
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 114

デフォルト last_checkin
  @last_checkin
end

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

#閉じました= true | false

接続が閉じられたかどうか。

閉じた接続は使用しないでください。 代わりに、接続プールから新しい接続を取得します。

次の値を返します。

  • true | false

    接続が閉じられたかどうか。

以来

  • 2.9.0



152
153
154
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 152

デフォルト 閉じましたか
  !!@closed
end

# 接続します 。 (context = nil) = true

注:

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

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

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

例:

ホストに接続します。

connection.connect!

次の値を返します。

  • ( true )

    接続が成功した場合。

以来

  • 2.0.0



228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 228

デフォルト 接続します。(context = nil)
  accumulate_if_closed。

  ただし、 @socket
    @socket = create_socket(context)
    @description, @compressor = do_connect

    場合 サーバー.load_ balancer?
      場合 Lint.有効か & & !service_id
        発生 エラー::internalDriverError,
              ロードバランサーへの接続であり、ここで service_id を設定する必要がありますが、ありません。
      end
      @生成 = connection_Pool.generate_manager.生成(service_id: service_id)
    end

    public_cmap_event(
      モニタリング::イベント::Cmap::ConnectionReady.新着情報(address, id)
    )

    @close_event_public = false
  end
  true
end

#接続済みかどうか= true | false

接続が接続され、中断されないか、閉じられたか、エラーが発生したか。

次の値を返します。

  • true | false

    接続が接続されていた場合。

以来

  • 2.0.0



140
141
142
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 140

デフォルト 接続されていますか?
  !閉じましたか & & !error? & & !中断された場合 & & !!@socket
end

# connection_Pool =オブジェクト

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

この接続が作成された接続プール。 場合は nil です。

以来

  • 2.0.0



132
133
134
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 132

デフォルト connection_Pool
  options[: connection_Pool]
end

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

注:

接続が切断されると、その接続は使用できなくなります。 接続プールから新しい接続を取得する必要があります。これにより、準備ができた接続が返されるか、新しい接続が作成されます。 リンティングが有効になっている場合、切断された接続を再利用すると Error::LintError が発生します。 リンティングが有効になっていない場合は、警告がログに記録されます。

注:

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

接続を切断します。

パラメーター:

  • options ハッシュ (デフォルトはnil

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

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

  • :理由 記号

    接続が閉じられている理由。

  • :中断 true | false

    接続が中断されたかどうか。

次の値を返します。

  • ( true )

    切断が成功した場合。

以来

  • 2.0.0



310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 310

デフォルト 切断します。(options = nil)
  注:ここでは @closed は true である可能性がありますが、ソケットがある場合もあります。
  # ソケットを確認し、@Closed フラグではないようにします。
  @auth_mechanism = nil
  @last_checkin = nil
  場合 ソケット
    begin
      ソケット.閉じる
    ヘルプ 標準エラー
      nil
    end
    @socket = nil
  end
  @closed = true
  中断されました。 場合 options & & options[:中断]

  # CMAP 仕様テストを満たすには、次の場合でも閉じたイベントを公開します:
  ソケットは接続されませんでした(つまり準備完了イベントは
  公開された数)。 ただし、イベントを閉じているかどうか、次では行わないようにします
  ソケットが再接続されない限り、複数回公開します -
  その場合は 、ソケットが閉じるごとに閉じるイベントを公開します。
  ただし、 @close_event_public
    理由 = options & & options[:理由]
    public_cmap_event(
      モニタリング::イベント::Cmap::ConnectionClosed.新着情報(
        address,
        id,
        理由
      )
    )
    @close_event_public = true
  end

  true
end

#error?Boolean

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

次の値を返します。

  • ブール値

以来

  • 2.0.0



172
173
174
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 172

デフォルト error?
  !!@error
end

#が中断されました。 =オブジェクト

接続を中断としてマークします。

以来

  • 2.0.0



167
168
169
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 167

デフォルト 中断されました。
  @trigger = true
end

中断された場合true | false

接続が中断されたかどうか。

中断された接続はすでにプールから削除されているため、プールにチェックバックしないでください。

次の値を返します。

  • true | false

    接続が中断されたかどうか。

以来

  • 2.0.0



162
163
164
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 162

デフォルト 中断された場合
  !!@trigger
end

#pin(reason = :カーソル) ⇒ オブジェクト

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

特定の理由で接続を固定されたものとしてマークします。

パラメーター:

  • 理由 記号 (デフォルトは ::カーソル

    固定の理由(:カーソル または :トランザクション)。下位互換性のためにデフォルトは :cursor です。

以来

  • 2.0.0



194
195
196
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 194

デフォルト ピン(理由 = :cursor)
  @ping_理由s < 理由
end

#ping = truefalse

非推奨。

サーバー選択の仕様が不要になりました。

注:

これは、最適化のために事前にシリアル化された ping メッセージを使用します。

接続を ping して、サーバーがコマンドに応答しているかどうかを確認します。 これはサーバー側では非ブロッキングです。

例:

接続を ping します。

connection.ping

次の値を返します。

  • truefalse

    サーバーが接続を受け入れている場合、

以来

  • 2.1.0



359
360
361
362
363
364
365
366
367
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 359

デフォルト ping
  concern_connected 行う |ソケット|
    応答 = add_server_iagnostics 行う
      ソケット.書込み (write)(PING_OP_MSG_BYTES)
      プロトコル::メッセージ.逆シリアル化(ソケット, max_message_size)
    end
    応答.ドキュメント[0][操作::結果::OK] == 1
  end
end

ピン留めされた数は? =ブール値

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

接続がトランザクションで使用されるか、カーソル操作で使用されるか。

ピン留めされた接続は、アイドル状態または古い場合、接続プールから切断して削除しないでください。

@return [ true | false ] 接続が固定されているかどうか。

次の値を返します。

  • ブール値

以来

  • 2.0.0



184
185
186
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 184

デフォルト ピン留めされたかどうか
  !@ping_理由s.空の場合
end

#Record_checkin. =自己

前回のチェックイン時間を記録します。

例:

この接続のチェックイン時間を記録します。

connection.record_checkin!

次の値を返します。

  • 自己

以来

  • 2.5.0



388
389
390
391
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 388

デフォルト Record_checkin.
  @last_checkin = 時間.になりました
  自己
end

# socket_timeout =浮動小数点数:タイムアウト

ソケットで操作を実行するためのタイムアウトを取得します。

次の値を返します。

  • 浮動小数

    操作のタイムアウト時間(秒)。

以来

  • 2.0.0



374
375
376
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 374

デフォルト socket_timeout
  @timeout ||= options[:socket_timeout]
end

#transportSymbol | nil

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

この接続のトランスポートの種類を取得します。

次の値を返します。

  • (Symbol | nil)

    トランスポート タイプ、 :tcp または :unix 、またはソケットがない場合は nil 。

以来

  • 2.0.0



398
399
400
401
402
403
404
405
406
407
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 398

デフォルト トランスポート
  return nil 場合 @socket.nil?

  ケース @socket
  次の場合: mongo::ソケット::Unix
    :Unix
  else
    :tcp
  end
end

#unpin(reason = :カーソル) ⇒ オブジェクト

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

指定された理由で接続からピンを削除します。

パラメーター:

  • 理由 記号 (デフォルトは ::カーソル

    固定を解除する理由(:カーソル または :トランザクション)。下位互換性のためにデフォルトは :cursor です。

以来

  • 2.0.0



204
205
206
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 204

デフォルト unpin(理由 = :cursor)
  @ping_理由s.削除(理由)
end

#unpin_all = オブジェクト

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

接続からすべてのピンを削除します。

以来

  • 2.0.0



211
212
213
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 211

デフォルト unin_all
  @ping_理由s.クリア
end