ホームページ > php教程 > php手册 > MIT 2012 分散コース 基本的なソース コード分析 - 基礎となる通信の実装

MIT 2012 分散コース 基本的なソース コード分析 - 基礎となる通信の実装

WBOY
リリース: 2016-08-20 08:47:39
オリジナル
1267 人が閲覧しました

このセクションの内容は、前のセクションのイベント管理のカプセル化と密接に関連しています。このセクションに含まれるメイン コードは connection{.h, .cc} にあります。

ここには、接続クラスと tcpsconn クラスの 2 つの主要なクラスがあります。接続クラスは主に、ソケット上のデータの読み取りと書き込みなどを含む 1 つのソケットを処理し、tcpsconn クラスは接続の受信などのソケットのコレクションを処理します。期限切れのソケットの更新など。具体的にヘッダファイルを見てみましょう。

リーリー

最初に表示されるのは、この仮想基本クラスです。このクラスは、接続クラスと tcpsconn クラスで委任の形式で使用されます。このクラスには、RPC 実装で重要な役割を果たすメソッドが 1 つだけあります。後でまた紹介します。

接続クラス

リーリー
コードを表示

このコードは、aio_callback から継承します。aio_callback は、データの読み取りまたは書き込みを行うためのイベント管理クラスのコールバック クラスとして使用されます。クラス。

それは接続のコンストラクターから知ることができます。

リーリー

では、このクラスの具体的な機能は何でしょうか?実際、データを送信する場合、データが送信されない場合、イベントはイベント管理に追加され、送信され続けます。イベント ループの次のラウンドでは、send 関数からこれを確認できます。

リーリー
送信
データの読み込みは、rpdu_(読み込みバッファ)がフルでない状態で読み込みを続け、読み込み完了後、chanmgrクラスのgot_pduを使用して読み込みデータを処理します。

データの送信/データの受信は、最初にデータサイズを送信/受信データサイズを送信してから、その後のデータ送信/データ受信の作業を行うことに注意してください。

接続クラスのデータを送受信する機能に加えて、参照カウントに使用されるプライベート変数 refno_ 変数も表示されます。参照カウントは、Python などで使用される非常に一般的なプログラミング手法です。オブジェクト管理の場合、参照カウントが 0 になると、オブジェクトは破棄されます。これは、decref 関数からもわかります。

リーリー

tcpscon クラス:

このクラスは接続を管理するために使用されます。まずその定義を見てみましょう。

リーリー

マップのキーが実際には接続クラスのポインターに対応するソケットであることがわかります。

リーリー コードを表示
このコンストラクターは主にサーバー側の接続を初期化し、後でクライアント接続を処理するときに、接続されたクライアント ソケットが conns_ のマップに追加されます。接続ポインタの対応する関係に作成され、conns_ をトラバースして無効な接続をクリアし、タイムリーに無効な接続を処理する効果を実現します。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート