void ChannelController::stop() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("input") && data().isObject("input") ) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); setData("input", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter is a channelname if ( parameters.size() > 1 ) { pcfParameters->set("ChannelName", parameters[1]); } else { if ( form().has("ChannelName") ) pcfParameters->set("ChannelName", form().get("ChannelName")); } if ( form().has("ChannelDisposition") ) pcfParameters->set("ChannelDisposition", form().get("ChannelDisposition")); if ( form().has("ChannelStatus") ) pcfParameters->set("ChannelStatus", form().get("ChannelStatus")); if ( form().has("ConnectionName") ) pcfParameters->set("ConnectionName", form().get("ConnectionName")); if ( form().has("Mode") ) pcfParameters->set("Mode", form().get("Mode")); if ( form().has("QMgrName") ) pcfParameters->set("QMgrName", form().get("QMgrName")); } ChannelStop command(*commandServer(), pcfParameters); setData("data", command.execute()); }
void ChannelController::copy() { Poco::JSON::Object::Ptr pcfParameters; if (data().has("input") && data().isObject("input")) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); std::vector<std::string> parameters = getParameters(); if (parameters.size() > 2) { pcfParameters->set("FromChannelName", parameters[2]); } if (parameters.size() > 1) { pcfParameters->set("ToChannelName", parameters[1]); } // Copy all query parameters to PCF for (Poco::Net::NameValueCollection::ConstIterator it = form().begin(); it != form().end(); ++it) { pcfParameters->set(it->first, it->second); } } ChannelCopy command(*commandServer(), pcfParameters); command.execute(); }
void ChannelController::create() { Poco::JSON::Object::Ptr pcfParameters; if (data().has("input") && data().isObject("input")) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); std::vector<std::string> parameters = getParameters(); if (parameters.size() > 1) { pcfParameters->set("ChannelName", parameters[1]); } if (parameters.size() > 2) { pcfParameters->set("ChannelType", parameters[2]); } // Copy all query parameters to PCF, except ChannelName if it is already set on the URI for (Poco::Net::NameValueCollection::ConstIterator it = form().begin(); it != form().end(); ++it) { if (parameters.size() > 1 && Poco::icompare(it->first, "ChannelName") == 0) continue; if (parameters.size() > 2 && Poco::icompare(it->first, "ChannelType") == 0) continue; pcfParameters->set(it->first, it->second); } } ChannelCreate command(*commandServer(), pcfParameters); command.execute(); }
void QueueStatusController::inquire() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("input") && data().isObject("input") ) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); setData("input", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a queuename. If this is passed, the // query parameter QName or queueName is ignored. if ( parameters.size() > 1 ) { pcfParameters->set("QName", parameters[1]); } else { // Handle query parameters pcfParameters->set("QName", form().get("QName", "*")); } pcfParameters->set("ExcludeSystem", form().get("ExcludeSystem", "false").compare("true") == 0); pcfParameters->set("ExcludeTemp", form().get("ExcludeTemp", "false").compare("true") == 0); if ( form().has("CommandScope") ) { pcfParameters->set("CommandScope", form().get("CommandScope")); } if ( form().has("QSGDisposition") ) { pcfParameters->set("QSGDisposition", form().get("QSGDisposition")); } if ( form().has("StatusType") ) pcfParameters->set("StatusType", form().get("StatusType")); if ( form().has("OpenType") ) pcfParameters->set("OpenType", form().get("OpenType")); handleFilterForm(pcfParameters); Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("QStatusAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for QStatusAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() > 0 ) { pcfParameters->set("QStatusAttrs", attrs); } } QueueStatusInquire command(*commandServer(), pcfParameters); setData("data", command.execute()); }
void ServiceController::inquire() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("filter") && data().isObject("filter") ) { pcfParameters = data().getObject("filter"); } else { pcfParameters = new Poco::JSON::Object(); set("filter", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a servicename. If this is passed // the query parameter ServiceName is ignored. if ( parameters.size() > 1 ) { pcfParameters->set("ServiceName", parameters[1]); } else { // Handle query parameters std::string serviceNameField; if ( form().has("ServiceName") ) { serviceNameField = form().get("ServiceName"); } else if ( form().has("name") ) { serviceNameField = form().get("name"); } if ( serviceNameField.empty() ) { serviceNameField = "*"; } pcfParameters->set("ServiceName", serviceNameField); } pcfParameters->set("ExcludeSystem", form().get("ExcludeSystem", "false").compare("true") == 0); Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("ServiceAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for ServiceAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() > 0 ) { pcfParameters->set("ServiceAttrs", attrs); } handleFilterForm(pcfParameters); } ServiceMapper mapper(*commandServer(), pcfParameters); set("services", mapper.inquire()); }
void ChannelController::remove() { Poco::JSON::Object::Ptr pcfParameters; if (data().has("input") && data().isObject("input")) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); meta().set("input", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a queuename. If this is passed, the // query parameter QName or queueName is ignored. if (parameters.size() > 1) { pcfParameters->set("ChannelName", parameters[1]); } else { // Handle query parameters std::string channelName; if (form().has("ChannelName")) { channelName = form().get("ChannelName"); } pcfParameters->set("ChannelName", channelName); } if (form().has("CommandScope")) { pcfParameters->set("CommandScope", form().get("CommandScope")); } if (form().has("QSGDisposition")) { pcfParameters->set("QSGDisposition", form().get("QSGDisposition")); } if (form().has("ChannelType")) { pcfParameters->set("ChannelType", form().get("ChannelType")); } if (form().has("ChannelTable")) { pcfParameters->set("ChannelTable", form().get("ChannelTable")); } } ChannelRemove command(*commandServer(), pcfParameters); command.execute(); }
void ConnectionController::inquire() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("filter") && data().isObject("filter") ) { pcfParameters = data().getObject("filter"); } else { pcfParameters = new Poco::JSON::Object(); set("filter", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a connection id and will result in inquiring // only that connection. if ( parameters.size() > 1 ) { pcfParameters->set("ConnectionId", parameters[1]); } Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("ConnectionAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for ConnectionAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() > 0 ) { pcfParameters->set("ConnectionAttrs", attrs); } if ( form().has("CommandScope") ) { pcfParameters->set("CommandScope", form().get("CommandScope")); } if ( form().has("ConnInfoType") ) { pcfParameters->set("ConnInfoType", form().get("ConnInfoType")); } if ( form().has("URDisposition") ) { pcfParameters->set("URDisposition", form().get("URDisposition")); } handleFilterForm(pcfParameters); } ConnectionMapper mapper(*commandServer(), pcfParameters); set("connections", mapper.inquire()); }
void AuthorityServiceController::inquire() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("filter") && data().isObject("filter") ) { pcfParameters = data().getObject("filter"); // There is a bug in MQCMD_INQUIRE_AUTH_SERVICE, AuthServiceAttrs is required! if ( !pcfParameters->has("AuthServiceAttrs") ) { Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); attrs->add("All"); pcfParameters->set("AuthServiceAttrs", attrs); } } else { pcfParameters = new Poco::JSON::Object(); set("filter", pcfParameters); Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("AuthServiceAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for AuthServiceAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() == 0 ) // Default must be specified for this command! { attrs->add("All"); } pcfParameters->set("AuthServiceAttrs", attrs); if ( form().has("ServiceComponent") ) { pcfParameters->set("ServiceComponent", form().get("ServiceComponent")); } handleFilterForm(pcfParameters); } AuthorityServiceMapper mapper(*commandServer(), pcfParameters); set("authservices", mapper.inquire()); }
void QueueController::clear() { Poco::JSON::Object::Ptr pcfParameters; if (data().has("input") && data().isObject("input")) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); meta().set("input", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a queuename. If this is passed, the // query parameter QName or queueName is ignored. if (parameters.size() > 1) { pcfParameters->set("QName", parameters[1]); } else { // Handle query parameters pcfParameters->set("QName", form().get("QName", "*")); } if (form().has("CommandScope")) { pcfParameters->set("CommandScope", form().get("CommandScope")); } if (form().has("QSGDisposition")) { pcfParameters->set("QSGDisposition", form().get("QSGDisposition")); } } QueueClear command(*commandServer(), pcfParameters); setData("data", command.execute()); }
int main (int argc, char *argv[]) { //Force line-only buffering so we can see the output during hangs setvbuf(stdout, NULL, _IOLBF, 0); setvbuf(stderr, NULL, _IOLBF, 0); GOOGLE_PROTOBUF_VERIFY_VERSION; hu_log_library_versions(); hu_install_crash_handler(); DBus::_init_threading(); gst_init(&argc, &argv); try { MazdaCommandServerCallbacks commandCallbacks; CommandServer commandServer(commandCallbacks); printf("headunit version: %s \n", commandCallbacks.GetVersion().c_str()); if (!commandServer.Start()) { loge("Command server failed to start"); return 1; } if (argc >= 2 && strcmp(argv[1], "test") == 0) { //test mode from the installer, if we got here it's ok printf("###TESTMODE_OK###\n"); return 0; } config::readConfig(); printf("Looping\n"); while (true) { //Make a new one instead of using the default so we can clean it up each run run_on_thread_main_context = g_main_context_new(); //Recreate this each time, it makes the error handling logic simpler DBus::Glib::BusDispatcher dispatcher; dispatcher.attach(run_on_thread_main_context); printf("DBus::Glib::BusDispatcher attached\n"); DBus::default_dispatcher = &dispatcher; printf("Making debug connections\n"); DBus::Connection hmiBus(HMI_BUS_ADDRESS, false); hmiBus.register_bus(); DBus::Connection serviceBus(SERVICE_BUS_ADDRESS, false); serviceBus.register_bus(); hud_start(); MazdaEventCallbacks callbacks(serviceBus, hmiBus); HUServer headunit(callbacks); g_hu = &headunit.GetAnyThreadInterface(); commandCallbacks.eventCallbacks = &callbacks; //Wait forever for a connection int ret = headunit.hu_aap_start(config::transport_type, true); if (ret < 0) { loge("Something bad happened"); continue; } gst_app.loop = g_main_loop_new(run_on_thread_main_context, FALSE); callbacks.connected = true; std::condition_variable quitcv; std::mutex quitmutex; std::mutex hudmutex; std::thread nm_thread([&quitcv, &quitmutex](){ nightmode_thread_func(quitcv, quitmutex); } ); std::thread gp_thread([&quitcv, &quitmutex](){ gps_thread_func(quitcv, quitmutex); } ); std::thread hud_thread([&quitcv, &quitmutex, &hudmutex](){ hud_thread_func(quitcv, quitmutex, hudmutex); } ); /* Start gstreamer pipeline and main loop */ printf("Starting Android Auto...\n"); g_main_loop_run (gst_app.loop); commandCallbacks.eventCallbacks = nullptr; callbacks.connected = false; callbacks.videoFocus = false; callbacks.audioFocus = AudioManagerClient::FocusType::NONE; callbacks.inCall = false; printf("quitting...\n"); //wake up night mode and gps polling threads quitcv.notify_all(); printf("waiting for nm_thread\n"); nm_thread.join(); printf("waiting for gps_thread\n"); gp_thread.join(); printf("waiting for hud_thread\n"); hud_thread.join(); printf("shutting down\n"); g_main_loop_unref(gst_app.loop); gst_app.loop = nullptr; /* Stop AA processing */ ret = headunit.hu_aap_shutdown(); if (ret < 0) { printf("hu_aap_shutdown() ret: %d\n", ret); return ret; } g_main_context_unref(run_on_thread_main_context); run_on_thread_main_context = nullptr; g_hu = nullptr; DBus::default_dispatcher = nullptr; } } catch(DBus::Error& error) { loge("DBUS Error: %s: %s", error.name(), error.message()); return 1; } return 0; }
void AuthenticationInformationController::inquire() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("filter") && data().isObject("filter") ) { pcfParameters = data().getObject("filter"); } else { pcfParameters = new Poco::JSON::Object(); set("filter", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a authentication information name (generic name is allowed) if ( parameters.size() > 1 ) { pcfParameters->set("AuthInfoName", parameters[1]); } else { // Handle query parameters std::string authInfoNameField; if ( form().has("AuthInfoName") ) { authInfoNameField = form().get("AuthInfoName"); } else if ( form().has("name") ) { authInfoNameField = form().get("name"); } if ( authInfoNameField.empty() ) { authInfoNameField = "*"; } pcfParameters->set("AuthInfoName", authInfoNameField); } Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("AuthInfoAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for AuthInfoAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() > 0 ) { pcfParameters->set("AuthInfoAttrs", attrs); } if ( form().has("AuthInfoType") ) { pcfParameters->set("AuthInfoType", form().get("AuthInfoType")); } if ( form().has("CommandScope") ) { pcfParameters->set("CommandScope", form().get("CommandScope")); } if ( form().has("QSGDisposition") ) { pcfParameters->set("QSGDisposition", form().get("QSGDisposition")); } pcfParameters->set("ExcludeSystem", form().get("ExcludeSystem", "false").compare("true") == 0); handleFilterForm(pcfParameters); } AuthenticationInformationMapper mapper(*commandServer(), pcfParameters); set("authinfos", mapper.inquire()); }
void QueueController::inquire() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("input") && data().isObject("input") ) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); meta().set("input", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a queuename. If this is passed, the // query parameter QName or queueName is ignored. if ( parameters.size() > 1 ) { pcfParameters->set("QName", parameters[1]); } else { // Handle query parameters pcfParameters->set("QName", form().get("QName", "*")); } if ( form().has("ClusterInfo") ) { std::string clusterInfo = form().get("ClusterInfo"); pcfParameters->set("ClusterInfo", Poco::icompare(clusterInfo, "true") == 0 ? "true" : "false"); } if ( form().has("ClusterName") ) { pcfParameters->set("ClusterName", form().get("ClusterName")); } if ( form().has("ClusterNameList") ) { pcfParameters->set("ClusterNamelist", form().get("ClusterNamelist")); } if ( form().has("CommandScope") ) { pcfParameters->set("CommandScope", form().get("CommandScope")); } if ( form().has("PageSetId") ) { int pageSetId = 0; if ( Poco::NumberParser::tryParse(form().get("PageSetId"), pageSetId) ) { pcfParameters->set("PageSetId", pageSetId); } } if ( form().has("QSGDisposition") ) { pcfParameters->set("QSGDisposition", form().get("QSGDisposition")); } std::string queueDepthField; if ( form().has("CurrentQDepth") ) { queueDepthField = form().get("CurrentQDepth", ""); } else if ( form().has("QueueDepth")) { queueDepthField = form().get("QueueDepth", ""); } if ( !queueDepthField.empty() ) { int queueDepth = 0; if ( Poco::NumberParser::tryParse(queueDepthField, queueDepth) ) { Poco::JSON::Object::Ptr filter = new Poco::JSON::Object(); filter->set("Parameter", "CurrentQDepth"); filter->set("Operator", "NLT"); //Not Less## filter->set("FilterValue", queueDepth); pcfParameters->set("IntegerFilterCommand", filter); } } handleFilterForm(pcfParameters); if ( form().has("QueueUsage") ) { pcfParameters->set("Usage", form().get("QueueUsage")); } else if ( form().has("Usage") ) { pcfParameters->set("Usage", form().get("Usage")); } if ( form().has("QueueType") ) { pcfParameters->set("QType", form().get("QueueType")); } pcfParameters->set("ExcludeSystem", form().get("ExcludeSystem", "false").compare("true") == 0); pcfParameters->set("ExcludeTemp", form().get("ExcludeTemp", "false").compare("true") == 0); Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("QAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for QAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() > 0 ) { pcfParameters->set("QAttrs", attrs); } } QueueInquire command(*commandServer(), pcfParameters); setData("data", command.execute()); }
void ChannelController::inquire() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("input") && data().isObject("input") ) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); setData("input", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a channelname. If this is passed // the query parameter ChannelName is ignored. A third parameter // can be used for setting the channel type. This parameter can also // be set using the query parameter ChannelType. if ( parameters.size() > 1 ) { pcfParameters->set("ChannelName", parameters[1]); } else { // Handle query parameters pcfParameters->set("ChannelName", form().get("ChannelName", "*")); } if ( parameters.size() > 2 ) { pcfParameters->set("ChannelType", parameters[2]); } else if ( form().has("ChannelType") ) { pcfParameters->set("ChannelType", form().get("ChannelType", "All")); } pcfParameters->set("ExcludeSystem", form().get("ExcludeSystem", "false").compare("true") == 0); Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("ChannelAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for ChannelAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() > 0 ) { pcfParameters->set("ChannelAttrs", attrs); } if ( form().has("CommandScope") ) { pcfParameters->set("CommandScope", form().get("CommandScope")); } if ( form().has("QSGDisposition") ) { pcfParameters->set("QSGDisposition", form().get("QSGDisposition")); } if ( form().has("DefaultChannelDisposition") ) { pcfParameters->set("DefaultChannelDisposition", form().get("DefaultChannelDisposition")); } handleFilterForm(pcfParameters); } ChannelInquire command(*commandServer(), pcfParameters); setData("data", command.execute()); }
void TopicController::inquire() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("filter") && data().isObject("filter") ) { pcfParameters = data().getObject("filter"); } else { pcfParameters = new Poco::JSON::Object(); set("filter", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a topicname. If this is passed // the query parameter topicName is ignored. if ( parameters.size() > 1 ) { pcfParameters->set("TopicName", parameters[1]); } else { // Handle query parameters std::string topicNameField; if ( form().has("TopicName") ) { topicNameField = form().get("TopicName"); } else if ( form().has("name") ) { topicNameField = form().get("name"); } if ( topicNameField.empty() ) { topicNameField = "*"; } pcfParameters->set("TopicName", topicNameField); } pcfParameters->set("ExcludeSystem", form().get("ExcludeSystem", "false").compare("true") == 0); if ( form().has("ClusterInfo") ) { std::string clusterInfo = form().get("ClusterInfo"); pcfParameters->set("ClusterInfo", Poco::icompare(clusterInfo, "true") == 0 ? "true" : "false"); } Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("TopicAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for TopicAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() > 0 ) { pcfParameters->set("TopicAttrs", attrs); } if ( form().has("CommandScope") ) { pcfParameters->set("CommandScope", form().get("CommandScope")); } if ( form().has("QSGDisposition") ) { pcfParameters->set("QSGDisposition", form().get("QSGDisposition")); } if ( form().has("TopicType") ) { pcfParameters->set("TopicType", form().get("TopicType")); } handleFilterForm(pcfParameters); } TopicMapper mapper(*commandServer(), pcfParameters); set("topics", mapper.inquire()); }
void SubscriptionController::inquire() { Poco::JSON::Object::Ptr pcfParameters; if ( data().has("input") && data().isObject("input") ) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); setData("input", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a subname. If this is passed // the query parameter subName is ignored. if ( parameters.size() > 1 ) { pcfParameters->set("SubName", parameters[1]); } else { // Handle query parameters pcfParameters->set("SubName", form().get("SubName", "*")); } if ( form().has("SubId") ) { pcfParameters->set("SubId", form().get("SubId")); } if ( form().has("SubscriptionType") ) { pcfParameters->set("SubscriptionType", form().get("SubscriptionType")); } pcfParameters->set("ExcludeSystem", form().get("ExcludeSystem", "false").compare("true") == 0); Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("SubAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for SubAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() > 0 ) { pcfParameters->set("SubAttrs", attrs); } if ( form().has("CommandScope") ) { pcfParameters->set("CommandScope", form().get("CommandScope")); } if ( form().has("Durable") ) { pcfParameters->set("Durable", form().get("Durable")); } handleFilterForm(pcfParameters); } SubscriptionInquire command(*commandServer(), pcfParameters); setData("data", command.execute()); }
void AuthorityRecordController::inquire() { if ( qmgr()->zos() ) { // Authority records are not supported on z/OS setResponseStatus(Poco::Net::HTTPResponse::HTTP_NOT_IMPLEMENTED, "/authrec/inquire not implemented for z/OS"); return; } Poco::JSON::Object::Ptr pcfParameters; if ( data().has("input") && data().isObject("input") ) { pcfParameters = data().getObject("input"); } else { pcfParameters = new Poco::JSON::Object(); setData("input", pcfParameters); std::vector<std::string> parameters = getParameters(); // First parameter is queuemanager // Second parameter can be a authentication information name and will result in inquiring // only that queue and ignores all query parameters. if ( parameters.size() > 1 ) { pcfParameters->set("ProfileName", parameters[1]); } else { // Handle query parameters if ( form().has("ProfileName") ) { pcfParameters->set("ProfileName", form().get("ProfileName")); } } Poco::JSON::Array::Ptr attrs = new Poco::JSON::Array(); formElementToJSONArray("ProfileAttrs", attrs); if ( attrs->size() == 0 ) // Nothing found for ProfileAttrs, try Attrs { formElementToJSONArray("Attrs", attrs); } if ( attrs->size() > 0 ) { pcfParameters->set("ProfileAttrs", attrs); } Poco::JSON::Array::Ptr jsonOptions = new Poco::JSON::Array(); pcfParameters->set("Options", jsonOptions); for(Poco::Net::NameValueCollection::ConstIterator itOptions = form().find("Options"); itOptions != form().end() && Poco::icompare(itOptions->first, "Options") == 0; ++itOptions) { jsonOptions->add(itOptions->second); } if ( form().has("ObjectType") ) pcfParameters->set("ObjectType", form().get("ObjectType")); if ( form().has("EntityName") ) pcfParameters->set("EntityName", form().get("EntityName")); if ( form().has("EntityType") ) pcfParameters->set("EntityType", form().get("EntityType")); if ( form().has("ServiceComponent") ) pcfParameters->set("ServiceComponent", form().get("ServiceComponent")); } AuthorityRecordInquire command(*commandServer(), pcfParameters); setData("data", command.execute()); }
int main(int argc, char *argv[]) { GOOGLE_PROTOBUF_VERIFY_VERSION; hu_log_library_versions(); hu_install_crash_handler(); #if defined GDK_VERSION_3_10 printf("GTK VERSION 3.10.0 or higher\n"); //Assuming we are on Gnome, what's the DPI scale factor? gdk_init(&argc, &argv); GdkScreen * primaryDisplay = gdk_screen_get_default(); if (primaryDisplay) { g_dpi_scalefactor = (float) gdk_screen_get_monitor_scale_factor(primaryDisplay, 0); printf("Got gdk_screen_get_monitor_scale_factor() == %f\n", g_dpi_scalefactor); } #else printf("Using hard coded scalefactor\n"); g_dpi_scalefactor = 1; #endif gst_app_t *app = &gst_app; int ret = 0; errno = 0; gst_init(NULL, NULL); struct sigaction action; sigaction(SIGINT, NULL, &action); if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { SDL_Log("Unable to initialize SDL: %s", SDL_GetError()); return 1; } sigaction(SIGINT, &action, NULL); DesktopCommandServerCallbacks commandCallbacks; CommandServer commandServer(commandCallbacks); if (!commandServer.Start()) { loge("Command server failed to start"); } //loop to emulate the caar while(true) { DesktopEventCallbacks callbacks; HUServer headunit(callbacks); /* Start AA processing */ ret = headunit.hu_aap_start(HU_TRANSPORT_TYPE::USB, true); if (ret < 0) { printf("Phone is not connected. Connect a supported phone and restart.\n"); return 0; } callbacks.connected = true; g_hu = &headunit.GetAnyThreadInterface(); commandCallbacks.eventCallbacks = &callbacks; /* Start gstreamer pipeline and main loop */ ret = gst_loop(app); if (ret < 0) { printf("STATUS:gst_loop() ret: %d\n", ret); } callbacks.connected = false; commandCallbacks.eventCallbacks = nullptr; /* Stop AA processing */ ret = headunit.hu_aap_shutdown(); if (ret < 0) { printf("STATUS:hu_aap_stop() ret: %d\n", ret); SDL_Quit(); return (ret); } g_hu = nullptr; } SDL_Quit(); return (ret); }