int main(void) { int pair[2]; if (pipe(pair) != 0) return -1; // run server thread Server srv(pair[0]); pthread_t thread; pthread_create(&thread, NULL, run_server, reinterpret_cast<void*>(&srv)); // client thread: fwriter writer(pair[1]); msgpack::packer<fwriter> pk(writer); typedef msgpack::type::tuple<std::string, std::string, std::string> put_t; typedef msgpack::type::tuple<std::string, std::string> get_t; put_t req1("put", "apple", "red"); put_t req2("put", "lemon", "yellow"); get_t req3("get", "apple"); pk.pack(req1); pk.pack(req2); pk.pack(req3); writer.flush(); writer.close(); pthread_join(thread, NULL); }
arrivWizardPagePatient::arrivWizardPagePatient() { setTitle(tr("Arrivée d'un patient")); QVBoxLayout *layoutVerticale = new QVBoxLayout(this); setLayout(layoutVerticale); QHBoxLayout * layoutRegime = new QHBoxLayout; layoutVerticale->addLayout(layoutRegime); labelRegime = new QLabel(tr("&Regime:"),this); layoutRegime->addWidget(labelRegime); comboBoxRegime = new QComboBox(this); comboBoxRegime->addItem("Choisissez"); QSqlQuery req0("select libelle from regime"); while (req0.next()) { comboBoxRegime->addItem(req0.value(0).toString()); } labelRegime->setBuddy(comboBoxRegime); layoutRegime->addWidget(comboBoxRegime); QHBoxLayout * layoutSurveillance = new QHBoxLayout; layoutVerticale->addLayout(layoutSurveillance); labelSurveillance = new QLabel(tr("&Surveillance:"),this); layoutSurveillance->addWidget(labelSurveillance); comboBoxSurveillance = new QComboBox(this); comboBoxSurveillance->addItem("Choisissez"); QSqlQuery req1("select libelle from surveillance"); while (req1.next()) { comboBoxSurveillance->addItem(req1.value(0).toString()); } layoutSurveillance->addWidget(comboBoxSurveillance); labelSurveillance->setBuddy(comboBoxSurveillance); QHBoxLayout * layoutTravail = new QHBoxLayout; layoutVerticale->addLayout(layoutTravail); labelTravail=new QLabel(tr("&Travail"),this); layoutTravail->addWidget(labelTravail); comboBoxTravail= new QComboBox(this); labelTravail->setBuddy(comboBoxTravail); comboBoxTravail->addItem("Choisissez"); //boucle de création des item QSqlQuery req("select libelle from travail"); while (req.next()) { comboBoxTravail->addItem(req.value(0).toString()); } comboBoxTravail->addItem("Aucun"); layoutTravail->addWidget(comboBoxTravail); registerField("regime*", comboBoxRegime); registerField("surveillance*",comboBoxSurveillance); registerField("travail*", comboBoxTravail); }
void MainWindow::on_pushButtonNouvelleBase_clicked() { QSqlQuery req("create database "+ui->lineEditNomNouvelleBase->text()); this->connexionOK(); ui->lineEditNomNouvelleBase->clear(); ui->listWidgetConnexion->clear(); QSqlQuery req1("show databases"); while(req1.next()) { ui->listWidgetConnexion->addItem(req1.value(0).toString()); } }
/// Handle a request and produce a reply. void handle_request(const std::vector<std::string>& url, std::shared_ptr<csi::http::connection> context) { if (context->request().method() == csi::http::POST) { std::shared_ptr<sample_data_req1> req1(new sample_data_req1()); if (csi::json_spirit_decode(context->request().content(), *req1)) _service->post(req1, context); else context->reply().create(csi::http::bad_request); return; } context->reply().create(csi::http::bad_request); }
void genInterfaceDetail(const IP_ADAPTER_ADDRESSES* adapter, Row& r) { r["interface"] = INTEGER(adapter->IfIndex); r["mtu"] = INTEGER(adapter->Mtu); r["type"] = INTEGER(adapter->IfType); r["description"] = wstringToString(adapter->Description); std::vector<std::string> toks; for (size_t i = 0; i < adapter->PhysicalAddressLength; i++) { std::stringstream ss; ss << std::hex; ss << static_cast<unsigned int>(adapter->PhysicalAddress[i]); auto s = ss.str(); if (s.size() < 2_sz) { s = '0' + s; } toks.push_back(s); } r["mac"] = osquery::join(toks, ":"); r["flags"] = INTEGER(adapter->Flags); r["metric"] = INTEGER(adapter->Ipv4Metric); // TODO: These values will need an equivalent on Windows systems r["last_change"] = BIGINT("-1"); r["collisions"] = BIGINT("-1"); // Grab the remaining table values from WMI auto query = "SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface WHERE " "Name = \"" + r["description"] + "\""; WmiRequest req1(query); if (req1.getStatus().ok()) { auto& results = req1.results(); if (!results.empty()) { std::string sPlaceHolder; unsigned long long ullPlaceHolder = 0; results[0].GetString("PacketsReceivedPerSec", sPlaceHolder); safeStrtoull(sPlaceHolder, 10, ullPlaceHolder); r["ipackets"] = BIGINT(ullPlaceHolder); results[0].GetString("PacketsSentPerSec", sPlaceHolder); safeStrtoull(sPlaceHolder, 10, ullPlaceHolder); r["opackets"] = BIGINT(ullPlaceHolder); results[0].GetString("BytesReceivedPerSec", sPlaceHolder); safeStrtoull(sPlaceHolder, 10, ullPlaceHolder); r["ibytes"] = BIGINT(ullPlaceHolder); results[0].GetString("BytesSentPerSec", sPlaceHolder); safeStrtoull(sPlaceHolder, 10, ullPlaceHolder); r["obytes"] = BIGINT(ullPlaceHolder); results[0].GetString("PacketsReceivedErrors", sPlaceHolder); safeStrtoull(sPlaceHolder, 10, ullPlaceHolder); r["ierrors"] = BIGINT(ullPlaceHolder); results[0].GetString("PacketsOutboundErrors", sPlaceHolder); safeStrtoull(sPlaceHolder, 10, ullPlaceHolder); r["oerrors"] = BIGINT(ullPlaceHolder); results[0].GetString("PacketsReceivedDiscarded", sPlaceHolder); safeStrtoull(sPlaceHolder, 10, ullPlaceHolder); r["idrops"] = BIGINT(ullPlaceHolder); results[0].GetString("PacketsOutboundDiscarded", sPlaceHolder); safeStrtoull(sPlaceHolder, 10, ullPlaceHolder); r["odrops"] = BIGINT(ullPlaceHolder); } else { LOG(INFO) << "Failed to retrieve network statistics for interface " << r["interface"]; } } query = "SELECT * FROM Win32_NetworkAdapter WHERE " "InterfaceIndex = " + r["interface"]; WmiRequest req2(query); if (req2.getStatus().ok()) { auto& results = req2.results(); if (!results.empty()) { bool bPlaceHolder; long lPlaceHolder = 0; unsigned __int64 ullPlaceHolder = 0; results[0].GetString("Manufacturer", r["manufacturer"]); results[0].GetString("NetConnectionID", r["connection_id"]); results[0].GetLong("NetConnectionStatus", lPlaceHolder); r["connection_status"] = INTEGER(lPlaceHolder); results[0].GetBool("NetEnabled", bPlaceHolder); r["enabled"] = INTEGER(bPlaceHolder); results[0].GetBool("PhysicalAdapter", bPlaceHolder); r["physical_adapter"] = INTEGER(bPlaceHolder); results[0].GetString("ServiceName", r["service"]); results[0].GetUnsignedLongLong("Speed", ullPlaceHolder); r["speed"] = INTEGER(ullPlaceHolder); } else { LOG(INFO) << "Failed to retrieve physical state for interface " << r["interface"]; } } query = "SELECT * FROM win32_networkadapterconfiguration WHERE " "InterfaceIndex = " + r["interface"]; WmiRequest req3(query); if (req3.getStatus().ok()) { auto& results = req3.results(); if (!results.empty()) { bool bPlaceHolder; std::vector<std::string> vPlaceHolder; results[0].GetBool("DHCPEnabled", bPlaceHolder); r["dhcp_enabled"] = INTEGER(bPlaceHolder); results[0].GetString("DHCPLeaseExpires", r["dhcp_lease_expires"]); results[0].GetString("DHCPLeaseObtained", r["dhcp_lease_obtained"]); results[0].GetString("DHCPServer", r["dhcp_server"]); results[0].GetString("DNSDomain", r["dns_domain"]); results[0].GetVectorOfStrings("DNSDomainSuffixSearchOrder", vPlaceHolder); r["dns_domain_suffix_search_order"] = osquery::join(vPlaceHolder, ", "); results[0].GetString("DNSHostName", r["dns_host_name"]); results[0].GetVectorOfStrings("DNSServerSearchOrder", vPlaceHolder); r["dns_server_search_order"] = osquery::join(vPlaceHolder, ", "); } else { LOG(INFO) << "Failed to retrieve DHCP and DNS information for interface " << r["interface"]; } } }
void FrontEnd::processSsdpSearch(SsdpServerTask *task, Interface *intf, const NPT_DataBuffer& data, const NPT_SocketAddress& fromAddr) { do { NPT_HttpRequest *req; NPT_InputStreamReference inputStream0(new NPT_MemoryStream(data.GetData(), data.GetDataSize())); NPT_BufferedInputStream inputStream(inputStream0); if (NPT_FAILED(NPT_HttpRequest::Parse(inputStream, NULL, req))) { break; } PtrHolder<NPT_HttpRequest> req1(req); if (req->GetMethod().Compare("M-SEARCH") != 0 || req->GetProtocol().Compare(NPT_HTTP_PROTOCOL_1_1) != 0 || req->GetUrl().GetPath().Compare("*") != 0) { break; } NPT_HttpHeader *hdrMan = req->GetHeaders().GetHeader("MAN"); if (!hdrMan || hdrMan->GetValue().Compare("\"ssdp:discover\"") != 0) { break; } NPT_HttpHeader *hdrHost = req->GetHeaders().GetHeader("HOST"); if (!hdrHost || (hdrHost->GetValue().Compare("239.255.255.250:1900") != 0 && hdrHost->GetValue().Compare("239.255.255.250") != 0)) { break; } int mx; NPT_HttpHeader *hdrMX = req->GetHeaders().GetHeader("MX"); if (!hdrMX || NPT_FAILED(NPT_ParseInteger(hdrMX->GetValue(), mx)) || mx < 1) { break; } if (mx > 120) { mx = 120; } NPT_HttpHeader *hdrST = req->GetHeaders().GetHeader("ST"); if (!hdrST) { break; } NPT_List<MatchContext*> matchList; NPT_UdpSocket sock(NPT_SOCKET_FLAG_CANCELLABLE); sock.Bind(NPT_SocketAddress(intf->m_context.m_ifAddr, 0)); NPT_SharedVariable waitVar; waitVar.SetValue(0); { ReadLocker locker(m_dsLock); for (NPT_Ordinal i = 0; i < m_deviceImplList.GetItemCount(); i++) { NPT_List<DeviceImplInfo*>::Iterator it = m_deviceImplList.GetItem(i); DeviceImplInfo *info = *it; MatchContext *matchContext = new MatchContext(); if (info->m_deviceImpl->match(hdrST->GetValue(), matchContext->matches)) { matchList.Add(matchContext); matchContext->deviceUuid = info->m_deviceImpl->uuid(); matchContext->expireSeconds = info->m_deviceImpl->m_expireSeconds; matchContext->descPath = info->m_deviceImpl->m_descPath; matchContext->httpRoot = info->m_context.m_httpRoot; } else { delete matchContext; } } } SsdpSearchAbortCallback abortCallback(&sock, &waitVar); if (task->registerAbortCallback(&abortCallback)) { for (NPT_Ordinal i = 0; i < matchList.GetItemCount(); i++) { MatchContext *matchContext = *matchList.GetItem(i); NPT_String location = NPT_String::Format("http://%s:%d%s%s", intf->m_context.m_ifAddr.ToString().GetChars(), intf->m_context.m_httpPort, matchContext->httpRoot.GetChars(), matchContext->descPath.GetChars()); bool broken = false; for (NPT_Ordinal j = 0; j < matchContext->matches.GetItemCount(); j++) { NPT_List<DeviceImplMatch>::Iterator it2 = matchContext->matches.GetItem(j); NPT_Timeout timeout = NPT_System::GetRandomInteger() % (mx * 1000); // TODO: wait or not ??? timeout = 0; if (NPT_SUCCEEDED(waitVar.WaitWhileEquals(0, timeout))) { break; } { ReadLocker locker(m_dsLock); if (m_deviceImplIndex.HasKey(matchContext->deviceUuid)) { NPT_TimeStamp ts; NPT_System::GetCurrentTimeStamp(ts); NPT_String dateStr = NPT_DateTime(ts).ToString(NPT_DateTime::FORMAT_RFC_1123); NPT_String resp = NPT_String::Format("HTTP/1.1 200 OK\r\nCACHE-CONTROL: max-age=%d\r\nDATE: %s\r\nEXT: \r\nLOCATION: %s\r\nSERVER: %s\r\nST: %s\r\nUSN: %s\r\nCUSTOM:%s\r\n\r\n", matchContext->expireSeconds, dateStr.GetChars(), location.GetChars(), m_serverHeader.GetChars(), it2->m_st.GetChars(), it2->m_usn.GetChars(), m_DevName.GetChars()); NPT_DataBuffer packet(resp.GetChars(), resp.GetLength(), false); sock.Send(packet, &fromAddr); } } } if (broken) { break; } } task->unregisterAbortCallback(&abortCallback); } matchList.Apply(NPT_ObjectDeleter<MatchContext>()); } while (false); }
void FrontEnd::httpConnectorOnNewClient(HttpServerTask *task, Interface *intf, NPT_Socket *client) { NPT_Result nr; NPT_InputStreamReference inputStream0; nr = client->GetInputStream(inputStream0); if (NPT_FAILED(nr)) { return; } NPT_OutputStreamReference outputStream; nr = client->GetOutputStream(outputStream); if (NPT_FAILED(nr)) { return; } NPT_BufferedInputStreamReference inputStream(new NPT_BufferedInputStream(inputStream0)); NPT_HttpRequest *req; nr = NPT_HttpRequest::Parse(*inputStream.AsPointer(), NULL, req); if (NPT_FAILED(nr)) { return; } // TODO: validate "HOST" ??? RequestContext reqCtx; reqCtx.clientHint = CH_Unknown; reqCtx.transferMode = TM_None; reqCtx.getcontentFeaturesReq = false; NPT_HttpHeader *hdrUserAgent = req->GetHeaders().GetHeader(NPT_HTTP_HEADER_USER_AGENT); if (hdrUserAgent) { if (hdrUserAgent->GetValue().Find("xbox", 0, true) >= 0) { NPT_LOG_INFO_1("XBox found [User-Agent: %s]", hdrUserAgent->GetValue().GetChars()); reqCtx.clientHint = CH_XBox; } } NPT_HttpHeader *hdrTransferMode = req->GetHeaders().GetHeader("transferMode.dlna.org"); if (hdrTransferMode) { const NPT_String& transferMode = hdrTransferMode->GetValue(); if (transferMode.Compare("Streaming", true) == 0) { reqCtx.transferMode = TM_Streaming; } else if (transferMode.Compare("Interactive", true) == 0) { reqCtx.transferMode = TM_Interactive; } else if (transferMode.Compare("Background", true) == 0) { reqCtx.transferMode = TM_Background; } else { reqCtx.transferMode = TM_Unknown; } } NPT_HttpHeader *hdrGetContentFeatures = req->GetHeaders().GetHeader("getcontentFeatures.dlna.org"); if (hdrGetContentFeatures) { NPT_String getContentFeatures = hdrGetContentFeatures->GetValue(); if (getContentFeatures.Trim().Compare("1") == 0) { reqCtx.getcontentFeaturesReq = true; } } NPT_SocketInfo si; client->GetInfo(si); onHttpRequestHeader(si, req); PtrHolder<NPT_HttpRequest> req1(req); NPT_String reqPath(req->GetUrl().GetPath()); NPT_TimeStamp ts; NPT_System::GetCurrentTimeStamp(ts); NPT_String dateStr = NPT_DateTime(ts).ToString(NPT_DateTime::FORMAT_RFC_1123); NPT_HttpResponse *resp = new NPT_HttpResponse(200, "OK", NPT_HTTP_PROTOCOL_1_1); PtrHolder<NPT_HttpResponse> resp1(resp); resp->GetHeaders().SetHeader(NPT_HTTP_HEADER_SERVER, m_serverHeader); resp->GetHeaders().SetHeader("Date", dateStr); resp->GetHeaders().SetHeader(NPT_HTTP_HEADER_CONTENT_LENGTH, "0"); resp->GetHeaders().SetHeader(NPT_HTTP_HEADER_CONTENT_TYPE, "text/xml"); HttpOutput *httpOutput = new HttpOutputImpl(this, si, outputStream); PtrHolder<HttpOutput> httpOutput1(httpOutput); { ReadLocker locker(m_cpLock); for (NPT_Ordinal i = 0; i < m_controlPointList.GetItemCount(); i++) { NPT_List<ControlPointInfo*>::Iterator it = m_controlPointList.GetItem(i); ControlPointInfo *info = *it; if (reqPath.StartsWith(info->m_context.m_httpRoot)) { NPT_InputStream *input = inputStream.AsPointer(); inputStream.Detach(); httpOutput1.detach(); resp1.detach(); req1.detach(); task->detach(); return info->m_controlPoint->processHttpRequest(&intf->m_context, reqPath.SubString(info->m_context.m_httpRoot.GetLength()), reqCtx, req, resp, input, httpOutput, client); } } } { ReadLocker locker(m_dsLock); for (NPT_Ordinal i = 0; i < m_deviceImplList.GetItemCount(); i++) { NPT_List<DeviceImplInfo*>::Iterator it = m_deviceImplList.GetItem(i); DeviceImplInfo *info = *it; if (reqPath.StartsWith(info->m_context.m_httpRoot)) { NPT_InputStream *input = inputStream.AsPointer(); inputStream.Detach(); httpOutput1.detach(); resp1.detach(); req1.detach(); task->detach(); return info->m_deviceImpl->processHttpRequest(&intf->m_context, reqPath.SubString(info->m_context.m_httpRoot.GetLength()), reqCtx, req, resp, input, httpOutput, client); } } } setStatusCode(*resp, 404); httpOutput->writeResponseHeader(*resp); httpOutput->flush(); }
int tsp_main(int ac,const char *av[]){ req1("xxx.xxx.xxx",318); return 0; }