クラス: 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(サーバー バージョン >= 3.6 )の ping コマンド

以来

  • 2.5.0

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

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

ping メッセージ。

以来

  • 2.1.0

プロトコル::クエリ.新着情報(Database::管理者, Database::コマンド, ping, :limit => -1)
PING_OP_MSG_MESSAGE =
非推奨。

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

メッセージを OP_MSG として ping します(サーバー バージョン >= 3.6 )。

以来

  • 2.5.0

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

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

未加工バイトとしての ping メッセージ。

以来

  • 2.1.0

PING_MESSAGE.直列化.to_s.freeze
PING_OP_MSG_BYTES =
非推奨。

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

未加工バイトとしての ping OP_MSG メッセージ(サーバー バージョン >= 3.6 )。

以来

  • 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#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 バージョン。 このハッシュには、以下の項目を含めることができます。

    • :version - string

    • :strict - ブール値

    • :deprecation_errors - ブール値

以来

  • 2.0.0



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 106

デフォルト 初期化(サーバー, 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
  @pinged = false

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

インスタンス属性の詳細

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

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

次の値を返します。

  • (整数)

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

以来

  • 2.0.0



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

デフォルト global_id
  @ global_id
end

ID整数(読み取り専用)

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

次の値を返します。

  • (整数)

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

以来

  • 2.9.0



136
137
138
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 136

デフォルト id
  @id
end

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

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

次の値を返します。

  • 時間

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

以来

  • 2.5.0



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

デフォルト last_checkin
  @last_checkin
end

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

#閉じました= true | false

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

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

次の値を返します。

  • true | false

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

以来

  • 2.9.0



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

デフォルト 閉じましたか
  !!@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
252
# ファイル '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
      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



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

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

# connection_Pool =オブジェクト

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

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

以来

  • 2.0.0



146
147
148
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 146

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

デフォルト 切断します。(options = nil)
  注:ここでは @closed は true である可能性がありますが、ソケットがある場合もあります。
  # ソケットを確認し、@Closed フラグではないようにします。
  @auth_mechanism = nil
  @last_checkin = nil
  場合 ソケット
    ソケット.閉じる ヘルプ nil
    @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



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

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

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

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

以来

  • 2.0.0



181
182
183
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 181

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

中断された場合true | false

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

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

次の値を返します。

  • true | false

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

以来

  • 2.0.0



176
177
178
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 176

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

#ピン=オブジェクト

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

接続をピン留めされたものとしてマークします。

以来

  • 2.0.0



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

デフォルト ピン
  @pinged = true
end

#ping = truefalse

非推奨。

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

注:

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

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

例:

接続を ping します。

connection.ping

次の値を返します。

  • truefalse

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

以来

  • 2.1.0



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

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

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

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

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

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

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

次の値を返します。

  • ブール値

以来

  • 2.0.0



198
199
200
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 198

デフォルト ピン留めされたかどうか
  @pinged
end

#Record_checkin. =自己

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

例:

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

connection.record_checkin!

次の値を返します。

  • 自己

以来

  • 2.5.0



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

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

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

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

次の値を返します。

  • 浮動小数

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

以来

  • 2.0.0



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

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

オブジェクト

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

接続を固定されていないとしてマークします。

以来

  • 2.0.0



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

デフォルト unpin
  @pinged = false
end