Exemplo n.º 1
0
void IOCPPool::svc_del(int n)
{
	EW_ASSERT(n>0 && n<m_nSessionMax);
	Session* pkey=m_aSessions[n].get();
	EW_ASSERT(pkey!=NULL);
	EW_ASSERT(pkey->state.get()==Session::STATE_DISCONNECT);

#ifndef EW_WINDOWS

	struct epoll_event ev;
	epoll_ctl(hIOCPhandler,EPOLL_CTL_DEL,pkey->sk_local.sock,&ev);

#endif

	pkey->state.store(Session::STATE_READY);
	pkey->sk_local.sock.close();
	pkey->OnDisconnected();
	m_aSessions[n].reset(NULL);
	m_lkfqSessionAvailable.putq(n);

	if(--accounter.nSessionCount==0)
	{
		m_nCanClose.set();
	}

}
Exemplo n.º 2
0
	void OnCanvasClosing(wxAuiNotebookEvent& evt)
	{
		wm.wup.lock();

		wxWindow* pPage=GetPage(evt.GetSelection());
		EW_ASSERT(pPage!=NULL);

		MvcView* pView=MvcView::GetViewByCanvas(pPage);
		if(!pView)
		{
			return;
		}

		ICmdParam cmd(-1);
		if(!pView->OnClose(wm))
		{
			evt.Veto();
			wm.wup.unlock();
			return;
		}

		if(pPage==m_pCurrentCanvas)
		{
			m_pCurrentCanvas.reset(NULL);
			SetActiveView(NULL);
		}

		wm.book.DetachView(pView);

	}
Exemplo n.º 3
0
void DLink::_do_insert(DLinkNode* w,DLinkNode* p)
{
	EW_ASSERT(p->_p_link_prev==NULL && p->_p_link_next==NULL);
	
	p->_p_link_next=w;
	p->_p_link_prev=w->_p_link_prev;
	w->_p_link_prev->_p_link_next=p;
	w->_p_link_prev=p;
	m_sz++;

}
Exemplo n.º 4
0
inline int String::_do_prinfv(const char* s,va_list vl)
{
	int _n1 = vsnprintf(NULL, 0, s, vl);
	if (_n1 < 0)
	{
		return -1;
	}

	char* _pnewstr = StringDetail::str_alloc(_n1);
	int _n2 = vsnprintf(_pnewstr, _n1, s, vl);

	EW_ASSERT(_n1 == _n2);

	StringDetail::str_free(m_ptr);
	m_ptr = _pnewstr;

	return _n2;

}
Exemplo n.º 5
0
	bool SetCurrentCanvas(wxWindow* w)
	{
		if(m_pCurrentCanvas.get()==w) return true;

		EW_ASSERT(MvcView::GetViewByCanvas(m_pCurrentCanvas)==m_pActiveView);

		if(m_pActiveView && !m_pActiveView->OnActivate(wm,-1))
		{
			return false;
		}

		m_pCurrentCanvas.reset(w);

		SetActiveView(MvcView::GetViewByCanvas(w));

		if(m_pActiveView)
		{
			m_pActiveView->OnActivate(wm,+2);
		}

		return true;
	}
Exemplo n.º 6
0
void CG_GGVar::add(CallableMetatable* p)
{
	EW_ASSERT(p!=NULL);
	add(p, p->m_sClassName, 0);
}
Exemplo n.º 7
0
void CG_GGVar::add(CallableFunction* p)
{
	EW_ASSERT(p!=NULL);
	add(p, p->GetName(), p->flags.val());
}