void wxRxCatalog::ProcessNetEvent(wxGISNetEvent& event) { wxNetMessage msg = event.GetNetMessage(); long nlId = msg.GetId(); if(nlId == wxNOT_FOUND || nlId == GetId()) { switch(msg.GetCommand()) { case enumGISNetCmdCmd: switch(msg.GetState()) { case enumGISCmdGetChildren: SendChildren(GetChildren(), GetId(), event.GetId()); break; default: break; } break; default: break; } } else //sent it to recipient by id { wxRxObject* pRxObject = dynamic_cast<wxRxObject*>(GetRegisterObject(nlId)); if(pRxObject) pRxObject->OnNetEvent(event); else { //send it back msg.SetState(enumGISNetCmdStErr); msg.SetMessage(_("The destination wxRxObject is not found")); wxGISNetworkService* pNetSrv = GetNetworkService(); if(pNetSrv) pNetSrv->SendNetMessage(msg, event.GetId()); } } }
void wxGISTaskManager::OnGisNetEvent(wxGISNetEvent& event) { wxNetMessage msg = event.GetNetMessage(); wxString sErrMsg; switch(msg.GetCommand()) { case enumGISNetCmdBye: //server disconnected DeleteAllTasks(); //start task manager server StartTaskManagerServer(); //start timer to connect task server m_timer.Start(5000, false); break; case enumGISNetCmdHello: { wxNetMessage msg(enumGISNetCmdCmd, enumGISCmdGetChildren, enumGISPriorityHigh); m_pConn->SendNetMessage(msg); //QuereTasks(sErrMsg); } break; case enumGISNetCmdNote: //if message id != -1 add to notify if(msg.GetId() != wxNOT_FOUND) { TSKMNGR_RESULT Res = {msg.GetId(), msg.GetMessage(), msg.GetState()}; PushResult(Res); } else { switch(msg.GetState()) { case enumGISNetCmdStOk: wxLogMessage(msg.GetMessage()); break; case enumGISNetCmdStErr: wxLogError(msg.GetMessage()); break; //case enumGISCmdNoteVol: // UpdateVolume(msg.GetXMLRoot()->GetChildren()); // break; //case enumGISCmdNotePercent: // UpdatePercent(msg.GetXMLRoot()->GetChildren()); // break; case enumGISCmdNoteMsg: AddMessage(msg.GetXMLRoot()->GetChildren()); break; default: wxLogVerbose(msg.GetMessage()); break; } } break; case enumGISNetCmdCmd: //do something usefull if(msg.GetId() != wxNOT_FOUND) { TSKMNGR_RESULT Res = {msg.GetId(), msg.GetMessage(), msg.GetState()}; PushResult(Res); } if(msg.GetXMLRoot()) { switch(msg.GetState()) { case enumGISCmdStAdd: AddTask(msg.GetXMLRoot()->GetChildren()); break; case enumGISCmdStDel: DeleteTask(msg.GetXMLRoot()->GetChildren()); break; case enumGISCmdStStart: case enumGISCmdStStop: case enumGISCmdStChng: ChangeTask(msg.GetXMLRoot()->GetChildren()); break; case enumGISCmdGetChildren: LoadTasks(msg.GetXMLRoot()->GetChildren()); break; case enumGISCmdStPriority://TODO: change priority for all task simultaniasly default: break; } } break; default: break; } }