static void streamMetaInformationCb(hbm::streaming::StreamClient& stream, const std::string& method, const Json::Value& params) { if (method == hbm::streaming::META_METHOD_AVAILABLE) { std::cout << "The following signal(s) are available : "; // simply subscibe all signals that become available. hbm::streaming::signalReferences_t signalReferences; for (Json::ValueConstIterator iter = params.begin(); iter!= params.end(); ++iter) { const Json::Value& element = *iter; std::cout << element.asString() << ", "; signalReferences.push_back(element.asString()); } std::cout << std::endl << std::endl; try { stream.subscribe(signalReferences); std::cout << "The following " << signalReferences.size() << " signal(s) were subscribed: "; } catch(const std::runtime_error& e) { std::cerr << "Error '" << e.what() << "' subscribing the following signal(s): "; } for(hbm::streaming::signalReferences_t::const_iterator iter=signalReferences.begin(); iter!=signalReferences.end(); ++iter) { std::cout << "'" << *iter << "' "; } std::cout << std::endl << std::endl; } else if(method==hbm::streaming::META_METHOD_UNAVAILABLE) { std::cout << "The following signal(s) are not available anyore: "; for (Json::ValueConstIterator iter = params.begin(); iter!= params.end(); ++iter) { const Json::Value& element = *iter; std::cout << element.asString() << ", "; } std::cout << std::endl << std::endl; } else if(method==hbm::streaming::META_METHOD_ALIVE) { // We do ignore this. We are using TCP keep alive in order to detect communication problems. } else if(method==hbm::streaming::META_METHOD_FILL) { if(params.empty()==false) { unsigned int fill = params[0u].asUInt(); if(fill>25) { std::cout << stream.address() << ": ring buffer fill level is " << params[0u].asUInt() << "%" << std::endl; } } } else { std::cout << "Meta information: " << method << " " << Json::FastWriter().write(params) << std::endl; } }