7575 < div class ="layout ">
7676 < div class ="menu " role ="navigation " aria-label ="ページメニュー ">
7777 < h2 class ="menu-title "> SOCKET-MANAGER</ h2 >
78- < h4 class ="menu-reference menu-page-title-bottom "> < a href ="./reference/index.html " target ="blank "> >> Reference</ a > </ h4 >
78+ < h4 class ="menu-reference menu-page-title-bottom "> < a href ="./reference/index.html " target ="_blank "> >> Reference</ a > </ h4 >
7979 < h2 class ="menu-label "> MAIN-MENU</ h2 >
8080 < div class ="menu-text ">
8181
@@ -272,7 +272,7 @@ <h2 class="subtitle">レイヤー概念図</h2>
272272 ここではプロトコル部とコマンド部の分離、UNITパラメータの役割、CycleDrivenManagerによる制御など、実際の仕組みを詳しく解説していきます。< br />
273273
274274 < div class ="img-block ">
275- < a href ="./img/architecture/outline.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/outline.png " loading ="lazy " alt ="SOCKET-MANAGERフレームワークのレイヤー構造図 " /> </ a >
275+ < a href ="./img/architecture/outline.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/outline.png " loading ="lazy " alt ="SOCKET-MANAGERフレームワークのレイヤー構造図 " /> </ a >
276276 </ div >
277277
278278 サーバーのアプリケーションの部分はプロトコル部とコマンド部に大きく分かれています。< br />
@@ -291,7 +291,7 @@ <h2 class="subtitle">キューとUNITの関係</h2>
291291 図にすると以下のようなイメージになります。
292292
293293 < div class ="img-block ">
294- < a href ="./img/architecture/que-and-unit.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/que-and-unit.png " loading ="lazy " alt ="SOCKET-MANAGERフレームワークのイベント処理部分であるキューとUNITの関係図 " /> </ a >
294+ < a href ="./img/architecture/que-and-unit.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/que-and-unit.png " loading ="lazy " alt ="SOCKET-MANAGERフレームワークのイベント処理部分であるキューとUNITの関係図 " /> </ a >
295295 </ div >
296296
297297 通信データの送受信の特徴として送りたいデータ、あるいは欲しいデータが一度に全て送信/受信できるとは限らないためこのような構成になっています。< br />
@@ -362,7 +362,7 @@ <h2 class="subtitle">UNIT定義クラス</h2>
362362
363363 UNIT 定義クラスの実装イメージは次の通りです。< br />
364364 < div class ="img-block ">
365- < a href ="./img/architecture/unit_class.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/unit_class.png " loading ="lazy " alt ="SOCKET-MANAGERフレームワークのイベント処理部分であるキューとUNITを定義するクラスの内部構造イメージ " /> </ a >
365+ < a href ="./img/architecture/unit_class.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/unit_class.png " loading ="lazy " alt ="SOCKET-MANAGERフレームワークのイベント処理部分であるキューとUNITを定義するクラスの内部構造イメージ " /> </ a >
366366 </ div >
367367
368368 プロトコル部のキュー名は < code > ProtocolQueueEnum</ code > で予約されているので、作成された Enum ファイルにはこの予約された Enum 値がエイリアス名として定義されます。< br /> < br />
@@ -395,7 +395,7 @@ <h3 class="underline">UNITパラメータクラス</h3>
395395 これを図にすると以下のようになります。< br />
396396
397397 < div class ="img-block ">
398- < a href ="./img/architecture/global.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/global.png " loading ="lazy " alt ="SOCKET-MANAGERフレームワーク内でのグローバル管理領域のアクセス概念図 " /> </ a >
398+ < a href ="./img/architecture/global.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/global.png " loading ="lazy " alt ="SOCKET-MANAGERフレームワーク内でのグローバル管理領域のアクセス概念図 " /> </ a >
399399 </ div >
400400
401401 初期化クラス内の < code > getUnitParameter メソッド</ code > でインスタンスを返す必要がありますが、インスタンス化するタイミングは初期化クラスの内側/外側を問いません。< br /> < br />
@@ -424,7 +424,7 @@ <h3 class="underline">シリアライザー/アンシリアライザー</h3>
424424 これを図にすると以下のようになります。< br /> < br />
425425
426426 < div class ="img-block ">
427- < a href ="./img/architecture/data_stack.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/data_stack.png " loading ="lazy " alt ="クライアントごとに管理している送受信データスタック領域とアクセス概念図 " /> </ a >
427+ < a href ="./img/architecture/data_stack.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/data_stack.png " loading ="lazy " alt ="クライアントごとに管理している送受信データスタック領域とアクセス概念図 " /> </ a >
428428 </ div >
429429
430430 < h3 class ="underline "> コマンドディスパッチャー</ h3 >
@@ -438,11 +438,11 @@ <h3 class="underline">コマンドディスパッチャー</h3>
438438 これを図にすると以下のようになります。< br /> < br />
439439
440440 < div class ="img-block ">
441- < a href ="./img/architecture/recv_flow.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/recv_flow.png " loading ="lazy " alt ="受信データを解析してコマンドディスパッチャーが処理を振り分ける概念図 " /> </ a >
441+ < a href ="./img/architecture/recv_flow.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/recv_flow.png " loading ="lazy " alt ="受信データを解析してコマンドディスパッチャーが処理を振り分ける概念図 " /> </ a >
442442 </ div >
443443
444444 < div class ="img-block ">
445- < a href ="./img/architecture/send_flow.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/send_flow.png " loading ="lazy " alt ="コマンドディスパッチャーを介さずに送信データが送出されるまでの概念図 " /> </ a >
445+ < a href ="./img/architecture/send_flow.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/send_flow.png " loading ="lazy " alt ="コマンドディスパッチャーを介さずに送信データが送出されるまでの概念図 " /> </ a >
446446 </ div >
447447
448448 < h3 class ="underline "> 緊急停止時のコールバック</ h3 >
@@ -467,29 +467,29 @@ <h2 class="subtitle">メイン処理クラス</h2>
467467 実装イメージは以下の通りです。< br />
468468
469469 < div class ="img-block ">
470- < a href ="./img/architecture/main_class.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/main_class.png " loading ="lazy " alt ="メイン処理クラスの内部構造イメージ " /> </ a >
470+ < a href ="./img/architecture/main_class.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/main_class.png " loading ="lazy " alt ="メイン処理クラスの内部構造イメージ " /> </ a >
471471 </ div >
472472
473473 このうち初期設定ブロックは < code > SocketManager</ code > の準備処理として必要な部分です。< br />
474474 ポート設定ブロックではマルチサーバーの子サーバーとして起動する場合、親サーバーへの接続を行うための < code > connect</ code > メソッドが使用される事があります。< br />
475475 ノンブロッキングループブロックは以下のイメージで動作します。< br />
476476
477477 < div class ="img-block ">
478- < a href ="./img/architecture/main1.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/main1.png " loading ="lazy " alt ="クライアント接続単体でのノンブロッキングループ動作イメージ " /> </ a >
478+ < a href ="./img/architecture/main1.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/main1.png " loading ="lazy " alt ="クライアント接続単体でのノンブロッキングループ動作イメージ " /> </ a >
479479 </ div >
480480
481481 1つの接続に対してプロトコル部とコマンド部が連携し合って動作します。< br />
482482 このうち1回の周期(ループ)で実行されるのはプロトコル/コマンド部のそれぞれ1 UNIT ずつとなります。< br />
483483 これが複数の接続になると以下のイメージになり、1つのサーバーで処理する単位になります。< br />
484484
485485 < div class ="img-block ">
486- < a href ="./img/architecture/main2.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/main2.png " loading ="lazy " alt ="複数のクライアント接続時のノンブロッキングループ動作イメージ " /> </ a >
486+ < a href ="./img/architecture/main2.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/main2.png " loading ="lazy " alt ="複数のクライアント接続時のノンブロッキングループ動作イメージ " /> </ a >
487487 </ div >
488488
489489 そして複数のサーバーを起動している場合は以下のイメージになり、プロセスが順当に割り当てられると1つのサーバープロセスが CPU の各コア(このケースではコアが4つの場合)に割り当てられてデュアルで動作します。< br />
490490
491491 < div class ="img-block ">
492- < a href ="./img/architecture/main3.png " target ="blank "> < img class ="img-zoomout " src ="./img/architecture/main3.png " loading ="lazy " alt ="複数のサーバープロセス稼働時のノンブロッキングループ動作イメージ " /> </ a >
492+ < a href ="./img/architecture/main3.png " target ="_blank "> < img class ="img-zoomout " src ="./img/architecture/main3.png " loading ="lazy " alt ="複数のサーバープロセス稼働時のノンブロッキングループ動作イメージ " /> </ a >
493493 </ div >
494494
495495 ※実際にサーバーをスケーリングする際には上記のイメージを基に計算/設計していく事になりますが、サーバー上の個々のプロセスを OS が必ずしも別々の CPU に割り当てるとは限らないため、リソースや処理時間等の実測値を見ながら調整していく事になります。< br /> < br />
0 commit comments