クラス: Mongo::Server::Connection
- 継承:
-
ConnectionBase
- オブジェクト
- ConnectionCommon
- ConnectionBase
- Mongo::Server::Connection
- 次による拡張機能。
- 転送可能
- 定義:
- lib/mongo/ サーバー/ connection.rb
Overview
このクラスは、サーバーのソケット接続とその動作をモデル化します。
定数の概要の削減
- PING =
非推奨。
サーバー選択の仕様が不要になりました。
ping コマンド。
{ ping: 1 }.freeze
- PING_OP_MSG =
非推奨。
サーバー選択の仕様が不要になりました。
OP_MSG のpingコマンド
{ :ping => 1, '$db' => Database::管理者 }.freeze
- PING_OP_MSG_MESSAGE =
非推奨。
サーバー選択の仕様が不要になりました。
OP_MSG としての ping メッセージ
プロトコル::Msg.新着情報([], {}, PING_OP_MSG)
- PING_OP_MSG_BYTES =
非推奨。
サーバー選択の仕様が不要になりました。
ping OP_MSG メッセージ(未加工バイトとして)
PING_OP_MSG_MESSAGE.直列化.to_s.freeze
Loggableに含まれる定数
ConnectionBaseから継承された定数
Mongo::Server::ConnectionBase::DEFAULT_MAX_BSON_OBJECT_SIZE 、 Mongo::Server::ConnectionBase::MAX_BSON_COMMAND_OVERHEAD 、 Mongo::Server::ConnectionBase::REDED_MAX_BSON_SIZE
インスタンス属性の概要を折りたたむ
-
#global_id ⇒ Integer
readOnly
すべての接続にわたる場合、
-
#id ⇒ Integer
readOnly
同じサーバー オブジェクトへの接続全体。
-
#last_checkin ⇒ Time
readOnly
接続がプールにチェックバックされた最後の時刻。
Monitoring::Publishable
ConnectionBaseから継承される属性
#description 、 #options 、 #server
ConnectionCommonから継承される属性
インスタンス メソッドの概要を折りたたむ
-
#閉じました= true | false
接続が閉じられたかどうか。
-
# 接続します 。 (context = nil) = true
ターゲット アドレスへのネットワーク接続を確立します。
-
#接続済みかどうか= true | false
接続が接続され、中断されないか、閉じられたか、エラーが発生したか。
-
# connection_Pool = オブジェクト
private
この接続が作成された接続プール。
-
#切断します。 (options = nil) = true
接続を切断します。
- #error? ⇒ Boolean private
-
#初期化(サーバー、オプション = {}) = 接続
コンストラクター
private
指定されたオプションを使用して、指定されたターゲットアドレスに新しい接続オブジェクトを作成します。
-
#が中断されました。 = オブジェクト
接続を中断としてマークします。
-
中断された場合= true | false
接続が中断されたかどうか。
-
#pin(reason = :カーソル) ⇒ オブジェクト
private
特定の理由で接続を固定されたものとしてマークします。
-
#ping = true、false
非推奨
非推奨。
サーバー選択の仕様が不要になりました。
-
ピン留めされた数は? = ブール値
private
接続がトランザクションで使用されるか、カーソル操作で使用されるか。
-
#Record_checkin. = 自己
前回のチェックイン時間を記録します。
-
# socket_timeout =浮動小数点数(#timeout)
ソケットで操作を実行するためのタイムアウトを取得します。
-
#transport ⇒ Symbol | nil
private
この接続のトランスポートの種類を取得します。
-
# 解除(理由 = :カーソル) ⇒ オブジェクト
private
指定された理由で接続からピンを削除します。
-
#unping_all = オブジェクト
private
接続からすべてのピンを削除します。
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 を実行しません(そのため、ソケットの作成、ハンドシェイク、認証も行われません)。接続を呼び出します。 接続オブジェクトのメソッドを使用して、ネットワーク接続を作成します。
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 デフォルト 初期化(サーバー, = {}) 場合 サーバー.load_ balancer? & & [: 生成] 発生 ArgumentError, 'サーバーがロードバランサーである場合、生成を設定することはできません' end @id = サーバー.next_ connection_id @ global_id = 自己.クラス.next_id @monitoring = サーバー.モニタリング @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 =整数(読み取り専用)
すべての接続にわたる場合、
124 125 126 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 124 デフォルト global_id @ global_id end |
ID ~整数(読み取り専用)
同じサーバー オブジェクトへの接続全体。
120 121 122 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 120 デフォルト id @id end |
# last_checkin =時間(読み取り専用)
接続がプールにチェックバックされた最後にチェックバックされた時刻を返します。
114 115 116 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 114 デフォルト last_checkin @last_checkin end |
インスタンス メソッドの詳細
#閉じました= true | false
接続が閉じられたかどうか。
閉じた接続は使用しないでください。 代わりに、接続プールから新しい接続を取得します。
152 153 154 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 152 デフォルト 閉じましたか !!@closed end |
# 接続します 。 (context = nil) = true
このメソッドは、以前にソケットが存在しなかった場合にソケットを設定することで接続オブジェクトをミューテーションします。
ターゲット アドレスへのネットワーク接続を確立します。
接続がすでに確立されている場合、このメソッドは何も実行しません。
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
接続が接続され、中断されないか、閉じられたか、エラーが発生したか。
140 141 142 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 140 デフォルト 接続されていますか? !閉じましたか & & !error? & & !中断された場合 & & !!@socket end |
# connection_Pool =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
この接続が作成された接続プール。 場合は nil です。
132 133 134 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 132 デフォルト connection_Pool [: connection_Pool] end |
#切断します。 (options = nil) = true
接続が切断されると、その接続は使用できなくなります。 接続プールから新しい接続を取得する必要があります。これにより、準備ができた接続が返されるか、新しい接続が作成されます。 リンティングが有効になっている場合、切断された接続を再利用すると Error::LintError が発生します。 リンティングが有効になっていない場合は、警告がログに記録されます。
このメソッドは、閉じが成功した場合はソケットを nil に設定して接続オブジェクトをミューテーションします。
接続を切断します。
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 デフォルト 切断します。( = nil) 注:ここでは @closed は true である可能性がありますが、ソケットがある場合もあります。 # ソケットを確認し、@Closed フラグではないようにします。 @auth_mechanism = nil @last_checkin = nil 場合 ソケット begin ソケット.閉じる ヘルプ 標準エラー nil end @socket = nil end @closed = true 中断されました。 場合 & & [:中断] # CMAP 仕様テストを満たすには、次の場合でも閉じたイベントを公開します: ソケットは接続されませんでした(つまり準備完了イベントは 公開された数)。 ただし、イベントを閉じているかどうか、次では行わないようにします ソケットが再接続されない限り、複数回公開します - その場合は 、ソケットが閉じるごとに閉じるイベントを公開します。 ただし、 @close_event_public 理由 = & & [:理由] public_cmap_event( モニタリング::イベント::Cmap::ConnectionClosed.新着情報( address, id, 理由 ) ) @close_event_public = true end true end |
#error? ⇒ Boolean
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
172 173 174 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 172 デフォルト error? !!@error end |
#が中断されました。 =オブジェクト
接続を中断としてマークします。
167 168 169 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 167 デフォルト 中断されました。 @trigger = true end |
中断された場合 ⇒ true | false
接続が中断されたかどうか。
中断された接続はすでにプールから削除されているため、プールにチェックバックしないでください。
162 163 164 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 162 デフォルト 中断された場合 !!@trigger end |
#pin(reason = :カーソル) ⇒ オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
特定の理由で接続を固定されたものとしてマークします。
194 195 196 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 194 デフォルト ピン(理由 = :cursor) @ping_理由s < 理由 end |
#ping = true 、 false
サーバー選択の仕様が不要になりました。
これは、最適化のために事前にシリアル化された ping メッセージを使用します。
接続を ping して、サーバーがコマンドに応答しているかどうかを確認します。 これはサーバー側では非ブロッキングです。
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) プロトコル::メッセージ.逆シリアル化(ソケット, ) end 応答.ドキュメント[0][操作::結果::OK] == 1 end end |
ピン留めされた数は? =ブール値
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
接続がトランザクションで使用されるか、カーソル操作で使用されるか。
ピン留めされた接続は、アイドル状態または古い場合、接続プールから切断して削除しないでください。
@return [ true | false ] 接続が固定されているかどうか。
184 185 186 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 184 デフォルト ピン留めされたかどうか !@ping_理由s.空の場合 end |
#Record_checkin. =自己
前回のチェックイン時間を記録します。
388 389 390 391 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 388 デフォルト Record_checkin. @last_checkin = 時間.になりました 自己 end |
# socket_timeout =浮動小数点数:タイムアウト
ソケットで操作を実行するためのタイムアウトを取得します。
374 375 376 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 374 デフォルト socket_timeout @timeout ||= [:socket_timeout] end |
#transport ⇒ Symbol | nil
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
この接続のトランスポートの種類を取得します。
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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定された理由で接続からピンを削除します。
204 205 206 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 204 デフォルト unpin(理由 = :cursor) @ping_理由s.削除(理由) end |
#unpin_all = オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
接続からすべてのピンを削除します。
211 212 213 |
# ファイル 'lib/mongo/ サーバー/ connection.rb' 行 211 デフォルト unin_all @ping_理由s.クリア end |