FarmServer 구조 설계
jjuiddong
FarmServer 구조 설계
- SubServer Login 시 처리 할 것
- 해당 svrType 값을 그룹을 생성한다. 이미 있다면 해당 그룹에 참여시킨다.
- farm server config 파일에 등록되지 않은 svrType은 제외 시킨다.
- sub server의 p2p link, input link, output link 정보를 받을 수 있는 상태를 만든다.
- 해당 svrType 값을 그룹을 생성한다. 이미 있다면 해당 그룹에 참여시킨다.
- SendSubServerP2P,Input,Output link 패킷을 받아서 해당 서버정보에 저장한다.
- 각각의 SvrType 의 접속 상태값을 대기중 상태로 초기화 한다.
- ReqServerInfoList 패킷이 오면, serverSvrType 으로 그룹을 찾아서, 각 서브서버가 clientSvrType을 client로 받는 (output_link, p2pS 중에서) 서버정보를 찾아, ip, port 정보를 전달한다.
- 해당 서버가 OnAir 상태가 아니라면 실패!!
- toBindOuterPort, toBindInnerPort 패킷이 오면, farm config 정보를 통해 base port 값을 얻고, 이미 생성된 서버의 port값을 비교해 최종 bind port값을 결정한다.
- BindComplete, ConnectComplete 패킷이 오면, 해당 서브서버의 p2p link, input link, output link 정보의 상태값을 업데이트 한다.
- FarmServer Group 정보
- 각각의 Remote Sub Server마다 가져야 할 정보
- input link 정보
- 상태 : 대기중, 접속
- 접속 할 bindSubSvrType
- client 상태에서 접속한 서버정보 ip, port
- output link 정보
- 상태 : 대기중, 접속
- listen 한 clientSubSvrType
- server 상태에서 bind한 ip, port 정보
- p2p link 정보
- 상태 : 대기중, 접속
- p2pS 라면 bind 한 ip, port 정보
- p2pC 라면 접속한 ip, port 정보
- input link 정보
- 각각의 Remote Sub Server마다 가져야 할 정보
FarmServer 자료구조
- CFarmServer
- 팜서버 객체
- SubServer를 CGroup으로 관리한다.
- farm server config 파일을 읽어서 그룹을 관리한다.
- toBindOuterPort, toBindInnerPort 를 config 파일을 통해 생성한다.
- SubServer Group
- CGroup에서 파생된다.
- 그룹으로 맺어진 서브서버들을 관리한다.
- 같은 svrType 으로 묶여진 서버들이다.
- outer base port
- inner base port
- RemoteSubServer
- RemoteClient에서 파생된다.
- outer base port
- input link 정보
- LinkServer vector
- output link 정보
- LinkServer vector
- p2p link 정보
- LinkServer vector
- LinkServer
- 서브 서버가 bind 하거나 connect 중인 서버 정보를 관리
- svrType
- state : wait, connect
- service type: client / server
- ip
- port
- Group클래스 파생
- factory
- copy
- marshaling