このセクションの内容は、前のセクションのイベント管理のカプセル化と密接に関連しています。このセクションに含まれるメイン コードは connection{.h, .cc} にあります。
ここには、接続クラスと tcpsconn クラスの 2 つの主要なクラスがあります。接続クラスは主に、ソケット上のデータの読み取りと書き込みなどを含む 1 つのソケットを処理し、tcpsconn クラスは接続の受信などのソケットのコレクションを処理します。期限切れのソケットの更新など。具体的にヘッダファイルを見てみましょう。
最初に表示されるのは、この仮想基本クラスです。このクラスは、接続クラスと tcpsconn クラスで委任の形式で使用されます。このクラスには、RPC 実装で重要な役割を果たすメソッドが 1 つだけあります。後でまた紹介します。
接続クラス
このコードは、aio_callback から継承します。aio_callback は、データの読み取りまたは書き込みを行うためのイベント管理クラスのコールバック クラスとして使用されます。クラス。
それは接続のコンストラクターから知ることができます。
では、このクラスの具体的な機能は何でしょうか?実際、データを送信する場合、データが送信されない場合、イベントはイベント管理に追加され、送信され続けます。イベント ループの次のラウンドでは、send 関数からこれを確認できます。
データの送信/データの受信は、最初にデータサイズを送信/受信データサイズを送信してから、その後のデータ送信/データ受信の作業を行うことに注意してください。
接続クラスのデータを送受信する機能に加えて、参照カウントに使用されるプライベート変数 refno_ 変数も表示されます。参照カウントは、Python などで使用される非常に一般的なプログラミング手法です。オブジェクト管理の場合、参照カウントが 0 になると、オブジェクトは破棄されます。これは、decref 関数からもわかります。
リーリー
このクラスは接続を管理するために使用されます。まずその定義を見てみましょう。
リーリーマップのキーが実際には接続クラスのポインターに対応するソケットであることがわかります。