CPipeAcceptedResult::~CPipeAcceptedResult() { CAsynPipe* pAsyPipe = CAsynPipe::GetAsynPipe(m_uPipeId); if (!pAsyPipe || (pAsyPipe->GetSessionID() != m_uSessionID)) return; if (!pAsyPipe->IsListening()) return; CAsynPipe* pNewAsynPipe = new CAsynPipe( NULL, pAsyPipe->GetSendBufferSize(), pAsyPipe->GetRecvBufferSize(), m_nNewPipeID ); CAsynPipeReactor* pReactor=class_cast<CAsynPipeReactor*>(pAsyPipe->GetReactor()); pReactor->Register(pNewAsynPipe); pNewAsynPipe->SetThreadId(m_uThreadId); CAddress LocalAddr; LocalAddr.SetAddress(m_szLocalAddr); LocalAddr.SetPort(m_uLocalPort); CAddress RemoteAddr; RemoteAddr.SetAddress(m_szRemoteAddr); RemoteAddr.SetPort(m_uRemotePort); pNewAsynPipe->SetLocalAddr(LocalAddr); pNewAsynPipe->SetRemoteAddr(RemoteAddr); pAsyPipe->GetHandler()->OnAccepted(pNewAsynPipe); if( !pNewAsynPipe->GetHandler() ) { pReactor->Unregister( pNewAsynPipe ); CPipeThread* pThread = CPipeThreadMgr::Inst()->GetThread(m_uThreadId); (new(pThread) CPipeReleaseJob(pNewAsynPipe->GetLocalID(), pThread))->Add(pThread); pNewAsynPipe->Release(); } CPipeThread* pOldThread = CPipeThreadMgr::Inst()->GetThread(m_uOldThreadId); (new(pOldThread) CRemoveWaitedPipeFromListJob(m_pPipe, pOldThread))->Add(pOldThread); }
CPipeConnectSuccResult::~CPipeConnectSuccResult() { CAsynPipe* pAsyPipe = CAsynPipe::GetAsynPipe(m_uPipeId); if (!pAsyPipe || (pAsyPipe->GetSessionID() != m_uSessionID)) return; CAddress LocalAddr; LocalAddr.SetAddress(m_szLocalAddr); LocalAddr.SetPort(m_uLocalPort); CAddress RemoteAddr; RemoteAddr.SetAddress(m_szRemoteAddr); RemoteAddr.SetPort(m_uRemotePort); pAsyPipe->SetLocalAddr(LocalAddr); pAsyPipe->SetRemoteAddr(RemoteAddr); pAsyPipe->m_eState=eAPS_Connected; pAsyPipe->GetHandler()->OnConnected(); }