Ejemplo n.º 1
0
        private void Update()
        {
            if (mNetworkSyncQueue == null)
            {
                return;
            }

            /***
             * 네트워크 이벤트
             */
            if (this.mNetworkSyncQueue.HasNetworkStateEvent())
            {
                /***
                 * 큐에서 Thread 경쟁이 붙을 경우 Null이 반환 될 수 있다.
                 * Null 체크를 꼭해주자
                 */
                Const <TCPCommon.NETWORK_STATE> constNetworkState = this.mNetworkSyncQueue.PopNetworkStateEvent();
                if (constNetworkState != null)
                {
                    SwitchStateHandle(constNetworkState.Value);
                }
            }

            if (mTCPState != TCPCommon.NETWORK_STATE.CONNECT)
            {
                return;
            }

            /***
             * 패킷 데이터
             */
            if (this.mNetworkSyncQueue.HasReceivePacket())
            {
                /***
                 * 큐에서 Thread 경쟁이 붙을 경우 Null이 반환 될 수 있다.
                 * Null 체크를 꼭해주자
                 */
                PacketStream packet = this.mNetworkSyncQueue.PopReceivePacket();
                if (packet != null)
                {
                    OnReceive(packet);
                }
            }
        }
Ejemplo n.º 2
0
 public void PushNetworkStateEvent(Const <TCPCommon.NETWORK_STATE> stateEvent)
 {
     mStateEventQueue.Push(stateEvent);
 }