"MadSoccer 설계 고민들"의 두 판 사이의 차이

jjuiddong
이동: 둘러보기, 찾기
(새 문서: = Server Communication System 설계 = * NetworkSystem ** N개의 NetGroupController 를 가진다. config 파일을 읽어서 NetGroupController를 생성한다. ** ReadConfigFile( ...)
 
(Server Communication System 설계)
1번째 줄: 1번째 줄:
= Server Communication System 설계 =
+
[[Server Communication System 설계]]
 
+
* NetworkSystem
+
** N개의 NetGroupController 를 가진다. config 파일을 읽어서 NetGroupController를 생성한다.
+
** ReadConfigFile( filename )
+
** private AddNetGroupController( NetGroupController )
+
** private Remove~
+
** private Get~
+
** private Clear~
+
** AddNetGroupListener(
+
** Remove~
+
** Get~
+
** Clear~
+
* Netconnector 일반화작업
+
** 이 클래스를 상속 받으면, 객체가 연결한 connector나 하위 자식으로 연결된 connector와 그룹이 맺어지고, 그룹 전체에게 패킷을 보내거나, 특정 멤버에게 패킷을 보낼 수 있게 된다.
+
** Connector
+
** 가상 Client
+
** NetGroupController
+
** Group& GetGroup( groupid )
+
** RemoteClient& GetRemoteClient( netid )
+
* NetGroupController
+
** server,client,p2p를 관리하는 클래스, 이객체가 NetworkSystem에 저장되고, 실제 server, client, p2p인스턴스를 생성하고, 제거하는 클래스다.
+
** config 파일에 등록된 group 갯수만큼 생성된다.
+
** NetConnector& GetConnector( typestring )
+
* NetGroupListener
+
** member typeString = ex) balancesvr, lobbysvr, gamesvr
+
** Group& GetGroup( groupid )
+
** NetConnector& GetConnector()
+
** Group& GetGroup( groupid )
+
** RemoteHost& GetRemoteHost( netid )
+
** AddProtocolListener
+
** Remove~
+
** Clear~
+
** AddEventListener()
+
** Remove~
+
** Clear~
+
* Server,Client,P2p EventListener 통합
+
* 가상Client
+
** N개의 Client의 패킷을 받는다.
+
** 공통된 프로토콜을 받아서, 데이타를 구성한다.
+
** 외부에서는 N개의 Client를 접근하는 일없이, 가상Client만 접근하면 모든 정보를 얻어올 수 있게 한다.
+
** interface를 상속받아 구현하고, 꼭 필요한 데이타만 가지게 한다. N개의 Client를 가질 필요는 없다. 인터페이스 형식이기 때문에, 패킷만 받고 관리하는 객체가 되어야 한다.
+
** 다른 부분에서도 쓸수 있게하자. (CClient, CClientBasic)
+
 
+
=== 고민해야 할 거리들 ===
+
- 어떻게 쉽게 그룹화해서 Connector를 통해 패킷을 전달할 것인가?
+
- 그룹화가 유용한가? - Connector에서 어떻게 server, client, p2p 멤버를 접근할 것인가?
+
- 어떤 플로우를 통해서 ConnectorController가 생성되고 제거되는가?
+
 
+
=== 몇가지 문제거리들 ===
+
 
+
* 그룹에 있는 특정 connector에게 어떻게 메세지를 보낼 것인가?
+
* 쓰레드 동기화 문제는 어떻게 해결할 것인가?
+
* N개의 client를 가질 때, 데이타 중복문제는 어떻게 해결할 것인가?
+
** 가상 client를 만들어서 관리한다.
+

2013년 4월 1일 (월) 20:22 판

Server Communication System 설계

개인 도구
이름공간

변수
행위
둘러보기
도구모음