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