Пример #1
0
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());
        }
    }
}
Пример #2
0
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;
    }
}