RestHttpDevice::RestHttpDevice(const std::string& listening_address, const std::string& listening_port, const std::string& doc_root) : osgGA::Device() , OpenThreads::Thread() , _server(listening_address, listening_port, osgDB::findDataFile(doc_root), std::max(OpenThreads::GetNumberOfProcessors() - 1, 1)) , _serverAddress(listening_address) , _serverPort(listening_port) , _documentRoot(doc_root) , _firstEventLocalTimeStamp() , _firstEventRemoteTimeStamp(-1) , _lastEventRemoteTimeStamp(0) , _currentMouseX(0.0f) , _currentMouseY(0.0f) , _targetMouseX(0.0f) , _targetMouseY(0.0f) , _targetMouseChanged(false) { setCapabilities(RECEIVE_EVENTS); OSG_NOTICE << "RestHttpDevice :: listening on " << listening_address << ":" << listening_port << ", document root: " << doc_root << std::endl; if (osgDB::findDataFile(doc_root).empty()) { OSG_WARN << "RestHttpDevice :: warning, can't locate document-root '" << doc_root << "'for the http-server, starting anyway" << std::endl; } _server.setCallback(new RestHttp::RequestHandlerDispatcherCallback(this)); addRequestHandler(new RestHttp::KeyCodeRequestHandler(false)); addRequestHandler(new RestHttp::KeyCodeRequestHandler(true)); addRequestHandler(new RestHttp::SetMouseInputRangeRequestHandler()); addRequestHandler(new RestHttp::MouseMotionRequestHandler()); addRequestHandler(new RestHttp::MouseButtonRequestHandler(RestHttp::MouseButtonRequestHandler::PRESS)); addRequestHandler(new RestHttp::MouseButtonRequestHandler(RestHttp::MouseButtonRequestHandler::RELEASE)); addRequestHandler(new RestHttp::MouseButtonRequestHandler(RestHttp::MouseButtonRequestHandler::DOUBLE_PRESS)); addRequestHandler(new RestHttp::HomeRequestHandler()); addRequestHandler(new RestHttp::StandardRequestHandler()); // start the thread start(); }
void MicroHttpd::addRequestHandler(const char *urlMatcher, HttpRequestHandler handler) { addRequestHandler(QRegularExpression(urlMatcher), handler); }