示例#1
0
    bool ServerObserver::HandleEvent(event_category_id_t category_id, event_id_t event_id, Foundation::EventDataInterface* data)
    {
        if (!framework_event_category_ && framework_)
           framework_event_category_ = framework_->GetEventManager()->QueryEventCategory("Framework");

        if (category_id == framework_event_category_)
        {
            switch (event_id)
            {
                case Foundation::WORLD_STREAM_READY:
                {
                    ProtocolUtilities::WorldStreamReadyEvent *event_data = dynamic_cast<ProtocolUtilities::WorldStreamReadyEvent *>(data);
                    if (event_data)
                    {
                        boost::shared_ptr<ProtocolUtilities::WorldStream> current_world_stream_ = event_data->WorldStream;
                        ProtocolUtilities::ClientParameters client_info = current_world_stream_->GetInfo();
                        QString agent_id = QString(client_info.agentID.ToString().c_str());
                        QString grid_url = QString(client_info.gridUrl.c_str());
                        RequestMumbleServerInfo(grid_url, agent_id);
                    }
                    break;
                }
                default:
                    break;
            }
        }
        return false;
    }
示例#2
0
    bool ServerInfoProvider::HandleEvent(event_category_id_t category_id, event_id_t event_id, IEventData* data)
    {
        if (!framework_event_category_ && framework_)
           framework_event_category_ = framework_->GetEventManager()->QueryEventCategory("Framework");

        if (!networkstate_event_category_ && framework_)
           networkstate_event_category_ = framework_->GetEventManager()->QueryEventCategory("NetworkState");

        if (category_id == framework_event_category_)
        {
            switch (event_id)
            {
            case Foundation::WORLD_STREAM_READY:
                {
                    ProtocolUtilities::WorldStreamReadyEvent *event_data = dynamic_cast<ProtocolUtilities::WorldStreamReadyEvent *>(data);
                    if (event_data)
                    {
                        current_world_stream_ = event_data->WorldStream;
                    }
                    break;
                }
                default:
                    break;
            }
        }

        if (category_id == networkstate_event_category_)
        {
            switch (event_id)
            {
            case ProtocolUtilities::Events::EVENT_CAPS_FETCHED:
                {
                    if (current_world_stream_)
                    {
                        QString cap_mumble_server_info_url = current_world_stream_->GetCapability("mumble_server_info");
                        if (cap_mumble_server_info_url.size() > 0)
                        {
                            ProtocolUtilities::ClientParameters client_info = current_world_stream_->GetInfo();
                            QString agent_id = QString(client_info.agentID.ToString().c_str());
                            RequestMumbleServerInfo(cap_mumble_server_info_url, agent_id);
                        }
                    }
                }
                break;
            }
        }

        return false;
    }