diff --git a/apps/server/src/application/coordinators/disconnectCoordinator.ts b/apps/server/src/application/coordinators/disconnectCoordinator.ts index 4d40e81..c81b8cf 100644 --- a/apps/server/src/application/coordinators/disconnectCoordinator.ts +++ b/apps/server/src/application/coordinators/disconnectCoordinator.ts @@ -2,16 +2,19 @@ * disconnectCoordinator * DISCONNECTイベントの調停を行い,ゲーム離脱処理とルーム離脱処理を順序実行する */ -import { GameManager } from "@server/domains/game/GameManager"; -import { RoomManager } from "@server/domains/room/RoomManager"; +import type { DisconnectPlayerPort } from "@server/domains/game/application/ports/gameUseCasePorts"; +import type { + DisconnectRoomPort, + FindRoomByPlayerPort, +} from "@server/domains/room/application/ports/roomUseCasePorts"; import { handleGameDisconnect } from "@server/network/handlers/GameHandler"; import { handleRoomDisconnect } from "@server/network/handlers/RoomHandler"; type DisconnectCoordinatorParams = { io: Parameters[0]; socketId: string; - gameManager: GameManager; - roomManager: RoomManager; + gameManager: DisconnectPlayerPort; + roomManager: DisconnectRoomPort & FindRoomByPlayerPort; }; /** 切断時にゲーム処理とルーム処理を調停し,一貫した離脱処理を実行する */ diff --git a/apps/server/src/domains/room/application/ports/roomUseCasePorts.ts b/apps/server/src/domains/room/application/ports/roomUseCasePorts.ts index defacee..c0e5a7b 100644 --- a/apps/server/src/domains/room/application/ports/roomUseCasePorts.ts +++ b/apps/server/src/domains/room/application/ports/roomUseCasePorts.ts @@ -25,3 +25,8 @@ export interface DisconnectRoomPort { removePlayer(socketId: string): roomTypes.Room[]; } + +/** 切断調停で利用するプレイヤー所属ルーム参照ポート */ +export interface FindRoomByPlayerPort { + getRoomByPlayerId(playerId: string): roomTypes.Room | undefined; +} diff --git a/apps/server/src/network/handlers/game/handleGameDisconnect.ts b/apps/server/src/network/handlers/game/handleGameDisconnect.ts index 77af1c8..9cb11a0 100644 --- a/apps/server/src/network/handlers/game/handleGameDisconnect.ts +++ b/apps/server/src/network/handlers/game/handleGameDisconnect.ts @@ -3,14 +3,14 @@ * ゲーム切断ユースケースを呼び出してプレイヤー離脱を配信する */ import { Server } from "socket.io"; -import { GameManager } from "@server/domains/game/GameManager"; +import type { DisconnectPlayerPort } from "@server/domains/game/application/ports/gameUseCasePorts"; import { disconnectUseCase } from "@server/domains/game/application/useCases/disconnectUseCase"; import { createGameDisconnectOutputAdapter } from "./createGameOutputAdapter"; /** 切断したプレイヤーをゲーム管理から除外し通知する */ export const handleGameDisconnect = ( io: Server, - gameManager: GameManager, + gameManager: DisconnectPlayerPort, roomId: string | undefined, playerId: string ) => { diff --git a/apps/server/src/network/handlers/room/handleRoomDisconnect.ts b/apps/server/src/network/handlers/room/handleRoomDisconnect.ts index 7c92990..213741b 100644 --- a/apps/server/src/network/handlers/room/handleRoomDisconnect.ts +++ b/apps/server/src/network/handlers/room/handleRoomDisconnect.ts @@ -3,7 +3,7 @@ * ルーム切断ユースケースを呼び出してルーム状態更新を配信する */ import { Server } from "socket.io"; -import { RoomManager } from "@server/domains/room/RoomManager"; +import type { DisconnectRoomPort } from "@server/domains/room/application/ports/roomUseCasePorts"; import { roomDisconnectUseCase } from "@server/domains/room/application/useCases/roomDisconnectUseCase"; import { createRoomDisconnectOutputAdapter } from "./createRoomOutputAdapter"; @@ -11,7 +11,7 @@ export const handleRoomDisconnect = ( io: Server, socketId: string, - roomManager: RoomManager + roomManager: DisconnectRoomPort ) => { const roomDisconnectOutputAdapter = createRoomDisconnectOutputAdapter(io); diff --git a/apps/server/src/network/handlers/room/registerRoomHandlers.ts b/apps/server/src/network/handlers/room/registerRoomHandlers.ts index d888b40..66b9d3f 100644 --- a/apps/server/src/network/handlers/room/registerRoomHandlers.ts +++ b/apps/server/src/network/handlers/room/registerRoomHandlers.ts @@ -3,7 +3,7 @@ * ルーム参加イベントの受信ハンドラを登録する */ import { Server, Socket } from "socket.io"; -import { RoomManager } from "@server/domains/room/RoomManager"; +import type { JoinRoomPort } from "@server/domains/room/application/ports/roomUseCasePorts"; import { protocol } from "@repo/shared"; import { joinRoomUseCase } from "@server/domains/room/application/useCases/joinRoomUseCase"; import { createCommonHandlerContext } from "@server/network/handlers/CommonHandler"; @@ -15,7 +15,7 @@ export const registerRoomHandlers = ( io: Server, socket: Socket, - roomManager: RoomManager + roomManager: JoinRoomPort ) => { const common = createCommonHandlerContext(io, socket); const roomOutputAdapter = createRoomOutputAdapter(common);