Exemple #1
0
void ControlPanel::onNotification(const Notification& note)
{
	if(note.getStatus() == Notification::kQueued)
		wxLogMessage(_T("Task %s sent and queued by server successfully (TaskID=%d)"), note.getName().c_str(), note.getTaskID());
	else if(note.getStatus() == Notification::kError)
	{
		wxLogMessage(_T("An error occured while sending task %s!"), note.getName().c_str());
		m_canSend = true;
#ifndef DEBUG
		if(note.getName() == "UPLOAD_SCRIPT")
		{
			wxMessageBox(_T("You have encountered an external error, not created by Xface!\nThe error comes from the FAP generator.\nSo, please make sure that in XfacePlayer side;\n\t- you have installed your FAP generator (expml2fap + Festival usually) properly\n\t- the path for the FAP generator in the menu is set correctly."),
				_T("External FAP Generation error!"), wxICON_EXCLAMATION | wxOK);
		}
#endif
	}
	else if(note.getStatus() == Notification::kStarted)
		wxLogMessage(_T("%s status: STARTED received for task %d"), note.getName().c_str(), note.getTaskID());
	else if(note.getStatus() == Notification::kFinished)
	{
		wxLogMessage(_T("%s status: FINISHED received for task %d"), note.getName().c_str(), note.getTaskID());
		m_canSend = true;
	}
	else	
		wxLogMessage(_T("%s status:%d received for task %d"), note.getName().c_str(), (int)note.getStatus(), note.getTaskID());
}
void Controller::executeCommand(const Notification& notification)
{
    CommandMap::iterator result = m_CommandMap.end();
    do
    {
        result = m_CommandMap.find(notification.getName());
        if (result == m_CommandMap.end())
        {
            return;
        }
    } while (false);
    Command* pCmd = CommandManager::getSingletonPtr()->createObject(result->second, BLANK);
    pCmd->initializeNotifier(m_szName);
    pCmd->go(notification);
    CommandManager::getSingletonPtr()->destoryObject(pCmd);
}
//-----------------------------------------------------------------------
void TransCommand::go(const Notification& notification)
{
    if (NTF_Predefined_Trans != notification.getName())
    {
        return;
    }
    typedef std::tuple<u2::Context*, ContextQueue::eTransType, u2::Context*>   TransCommandData;
    const TransCommandData* pData = static_cast<const TransCommandData*>(notification.getData());
    if (pData == nullptr)
    {
        assert(0);
    }
    else
    {
        u2::Context* pFrom = std::get<0>(*pData);
        ContextQueue::eTransType eType = std::get<1>(*pData);
        u2::Context* pTo = std::get<2>(*pData);
        _createMediator(pFrom, nullptr, eType, pTo);
    }
}
Exemple #4
0
void ControlPanel::OnSocketEvent(wxSocketEvent& event)
{
	switch(event.GetSocketEvent())
	{
		case wxSOCKET_CONNECTION : 
			break;
		case wxSOCKET_LOST  : 
			wxLogMessage(_T("Connection to server lost!"));
			Connection(false);
			break;
		case wxSOCKET_INPUT: // gets only notifications
		{
			// We disable input events, so that the test doesn't trigger
			// wxSocketEvent again.
			m_pSocket->SetNotify(wxSOCKET_LOST_FLAG);
			
			// get data
			wxString msg = ReadFromSocket(m_pSocket);
			// translate it to notification
			Notification note = XMLUtils::xmlToNotification((const char*)msg.c_str());
			
			if(note.getName() == "CONNECTION_OK")
			{
				m_clientId = note.getOwnerID();
				m_bConnected = true;
				wxLogMessage(_T("Connected successfully to server with ClientID %d."), m_clientId);
			}
			else
				onNotification(note);
			// Enable input events again.
			m_pSocket->SetNotify(wxSOCKET_LOST_FLAG | wxSOCKET_INPUT_FLAG);

			break;
		}
	}
}