예제 #1
0
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();
}
예제 #2
0
void MicroHttpd::addRequestHandler(const char *urlMatcher, HttpRequestHandler handler)
{
	addRequestHandler(QRegularExpression(urlMatcher), handler);
}