/// <summary> /// UI Listener callBack /// </summary> /// <param name="ClientEventAbstract"></param> private void CallBack(ClientEventAbstract clientEvent) { Log.game.Debug("UIEvent CallBack : " + clientEvent.GetProtocol().Desc); if (uiListeners.Count == 0) { return; } lock ( listenerLock ) { if (uiListeners.Count == 0) { return; } foreach (UIListenerData data in uiListeners) { if (data.Protocol == clientEvent.GetProtocol()) { data.Listener.perform(clientEvent); } } } }
/// <summary> /// UIListener Callback을 위해 list에 등록해둔다. /// 이후 doUiEvent Thread에서 하나씩 꺼내 처리 한다. /// </summary> /// <param name="ClientEventAbstract"></param> public void AddClientEvent(ClientEventAbstract clientEvent) { Log.game.Debug("GameEvent added : " + clientEvent.GetProtocol().Desc); lock ( eventLock ) { if (clientEvents.Contains(clientEvent)) { return; } clientEvents.Add(clientEvent); //이벤트 발생 대기중인 Thread를 해제한다 Monitor.Pulse(eventLock); } }
/// <summary> /// 프로토콜 결과 수신 /// ClientIoHandler -> IClientEventListener -> IUIEventListener.perform /// </summary> /// <param name="gameEvent"></param> public override void perform(ClientEventAbstract clientEvent) { //로그인 프로토콜 if( clientEvent.GetProtocol() == Protocol.USER_LOGIN ) { if( clientEvent.GetHResult() == RCode.SUCESS ) { status = LoginStatus.SUCESS; } else { status = LoginStatus.FAIL; } //중복 로그인 프로토콜 } else if( clientEvent.GetProtocol() == Protocol.DUPLICATE_LOGIN ) { status = LoginStatus.DUPLICATE_LOGIN; } }
/// <summary> /// UI Listener callBack /// </summary> /// <param name="ClientEventAbstract"></param> private void CallBack(ClientEventAbstract clientEvent) { Log.game.Debug("UIEvent CallBack : " + clientEvent.GetProtocol().Desc); if( uiListeners.Count == 0 ) return; lock( listenerLock ) { if( uiListeners.Count == 0 ) return; foreach( UIListenerData data in uiListeners ) { if( data.Protocol == clientEvent.GetProtocol() ) { data.Listener.perform(clientEvent); } } } }
/// <summary> /// UIListener Callback을 위해 list에 등록해둔다. /// 이후 doUiEvent Thread에서 하나씩 꺼내 처리 한다. /// </summary> /// <param name="ClientEventAbstract"></param> public void AddClientEvent(ClientEventAbstract clientEvent) { Log.game.Debug("GameEvent added : " + clientEvent.GetProtocol().Desc); lock( eventLock ) { if( clientEvents.Contains(clientEvent) ) return; clientEvents.Add(clientEvent); //이벤트 발생 대기중인 Thread를 해제한다 Monitor.Pulse(eventLock); } }