クラス: 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から継承されたメソッド

#handshake_command、#handshake_document、#Interrupt_socket

コンストラクターの詳細

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

このメソッドは、プライベート 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
110
# ファイル '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



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

デフォルト global_id
  @ global_id
end

ID整数(読み取り専用)

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

次の値を返します。

  • (整数)

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

以来

  • 2.9.0



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

デフォルト id
  @id
end

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

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

次の値を返します。

  • 時間

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

以来

  • 2.5.0



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

デフォルト last_checkin
  @last_checkin
end

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

#閉じました= true | false

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

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

次の値を返します。

  • true | false

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

以来

  • 2.9.0



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

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

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

注:

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

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

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

例:

ホストに接続します。

connection.connect!

次の値を返します。

  • ( true )

    接続が成功した場合。

以来

  • 2.0.0



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

デフォルト 接続します。(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



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

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

# connection_Pool =オブジェクト

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

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

以来

  • 2.0.0



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

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

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

注:

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

注:

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

接続を切断します。

パラメーター:

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

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

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

  • :理由 記号

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

  • :中断 true | false

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

次の値を返します。

  • ( true )

    切断が成功した場合。

以来

  • 2.0.0



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
345
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 311

デフォルト 切断します。(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



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

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

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

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

以来

  • 2.0.0



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

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

中断された場合true | false

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

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

次の値を返します。

  • true | false

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

以来

  • 2.0.0



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

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

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

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

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

パラメーター:

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

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

以来

  • 2.0.0



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

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

#ping = truefalse

非推奨。

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

注:

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

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

例:

接続を ping します。

connection.ping

次の値を返します。

  • truefalse

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

以来

  • 2.1.0



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

デフォルト 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



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

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

#Record_checkin. =自己

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

例:

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

connection.record_checkin!

次の値を返します。

  • 自己

以来

  • 2.5.0



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

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

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

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

次の値を返します。

  • 浮動小数

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

以来

  • 2.0.0



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

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

#transportSymbol | nil

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

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

次の値を返します。

  • (Symbol | nil)

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

以来

  • 2.0.0



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

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

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

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

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

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

パラメーター:

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

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

以来

  • 2.0.0



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

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

#unpin_all = オブジェクト

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

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

以来

  • 2.0.0



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

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