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); } }
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; } } }