Example #1
0
        //메인 접속 성공
        public void OnMainFrameConnect(RtfSession session, SessionManagerEvent smng_event)
        {
            if (session.IsPushSession())
            {
                //푸쉬 접속시...
                if (smng_event == SessionManagerEvent.push_connected)
                {
                    //메인 프레임에 접속 성공 이벤트를 알린다
                    ThreadSafe_OnSessionManagerEvent(this, new SessionManagerEventArgs(SessionManagerEvent.push_connected));
                }
            }
            else
            {
                //로그인시 최초 접속 성공전일때...
                if (bLoginFinished == false)
                {
                    if (smng_event == SessionManagerEvent.connected)
                    {
                        //최초로 접속이 성공한 순간..
                        bLoginFinished = true;

                        //각 세션들을 접속
                        ConnectSessionsToServer(strIP, strPort);

                        //폴링 타이머 시작
                        PollingTimerStart();
                    }

                    if (smng_event == SessionManagerEvent.connected || smng_event == SessionManagerEvent.connect_failure)
                    {
                        //세션메니저의 이벤트를 메인에 통보한다. //최초 접속성공시
                        // 로그인시 접속성공/실패/등등...
                        ThreadSafe_OnSessionManagerEvent(this, new SessionManagerEventArgs(smng_event));
                    }
                }
                else
                {
                    //로그인후... 접속종료시...
                    if (smng_event == SessionManagerEvent.disconnected)
                    {
                        //전체 세션 접속 종료시...
                        bool bNotifyAllDisconnected = true;
                        for (int i = 0; i < listSessionL.Count; i++)
                        {
                            RtfSession cur_session = listSessionL[i];
                            if (cur_session.bConnected == true)
                            {
                                bNotifyAllDisconnected = false;
                                break;
                            }
                        }
                        if (bNotifyAllDisconnected)
                        {
                            ThreadSafe_OnSessionManagerEvent(this, new SessionManagerEventArgs(smng_event));
                        }
                    }
                }

                //20130130 접속이벤트 발생시 현재 대기중인 TRITEM처리
                if (this._bShutDownProc == false)
                {
                    //if (smng_event == SessionManagerEvent.connected || smng_event == SessionManagerEvent.connect_failure)
                    if (smng_event == SessionManagerEvent.connected)
                    {
                        // 2013/10/22 세션 자동접속을 수동접속으로 변경
                        m_pollingTag = 0; // 폴링 카운트를 초기화
                        //대기큐에서 유효한 TRItem을 세션에 할당
                        DequeueReadyQueue(true);
                    }
                }
            }
        }
Example #2
0
 public SessionManagerEventArgs(SessionManagerEvent nEvent)
 {
     this.nEvent = nEvent;
 }