void web_pipeline_get(struct evhttp_request *req, void *arg) { moModule *module; struct evkeyvalq headers; const char *uri; uri = evhttp_request_uri(req); if ( uri == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "unable to retreive uri"); } evhttp_parse_query(uri, &headers); if ( evhttp_find_header(&headers, "objectname") == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "missing objectname"); } if ( evhttp_find_header(&headers, "name") == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "missing name"); } module = pipeline->getModuleById(evhttp_find_header(&headers, "objectname")); if ( module == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "object not found"); } web_message(req, module->property(evhttp_find_header(&headers, "name")).asString().c_str()); evhttp_clear_headers(&headers); }
void web_pipeline_set(struct evhttp_request *req, void *arg) { moModule *module; struct evkeyvalq headers; const char *uri; uri = evhttp_request_uri(req); evhttp_parse_query(uri, &headers); if ( evhttp_find_header(&headers, "objectname") == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "missing objectname"); } if ( evhttp_find_header(&headers, "name") == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "missing name"); } if ( evhttp_find_header(&headers, "value") == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "missing value"); } module = module_search(evhttp_find_header(&headers, "objectname"), pipeline); if ( module == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "object not found"); } module->property(evhttp_find_header(&headers, "name")).set( (const std::string &)evhttp_find_header(&headers, "value")); evhttp_clear_headers(&headers); web_message(req, "ok"); }
void web_pipeline_create(struct evhttp_request *req, void *arg) { moModule *module; struct evkeyvalq headers; const char *uri; uri = evhttp_request_uri(req); if ( uri == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "unable to retreive uri"); } evhttp_parse_query(uri, &headers); if ( evhttp_find_header(&headers, "objectname") == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "missing objectname"); } module = moFactory::getInstance()->create(evhttp_find_header(&headers, "objectname")); if ( module == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "invalid objectname"); } pipeline->addElement(module); evhttp_clear_headers(&headers); web_message(req, module->property("id").asString().c_str()); }
void web_pipeline_remove(struct evhttp_request *req, void *arg) { moModule *module; moDataStream *ds; struct evkeyvalq headers; const char *uri; uri = evhttp_request_uri(req); if ( uri == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "unable to retreive uri"); } evhttp_parse_query(uri, &headers); if ( evhttp_find_header(&headers, "objectname") == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "missing objectname"); } module = pipeline->getModuleById(evhttp_find_header(&headers, "objectname")); if ( module == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "object not found"); } pipeline->stop(); module->stop(); // disconnect inputs if ( module->getInputCount() ) { for ( int i = 0; i < module->getInputCount(); i++ ) { ds = module->getInput(i); if ( ds == NULL ) continue; ds->removeObserver(module); } } // disconnect output if ( module->getOutputCount() ) { for ( int i = 0; i < module->getOutputCount(); i++ ) { ds = module->getOutput(i); if ( ds == NULL ) continue; ds->removeObservers(); } } // remove element from pipeline pipeline->removeElement(module); delete module; web_message(req, "ok"); evhttp_clear_headers(&headers); }
void web_pipeline_connect(struct evhttp_request *req, void *arg) { moModule *in, *out; int inidx = 0, outidx = 0; struct evkeyvalq headers; const char *uri; uri = evhttp_request_uri(req); if ( uri == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "unable to retreive uri"); } evhttp_parse_query(uri, &headers); if ( evhttp_find_header(&headers, "out") == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "missing out"); } if ( evhttp_find_header(&headers, "in") == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "missing in"); } if ( evhttp_find_header(&headers, "outidx") != NULL ) outidx = atoi(evhttp_find_header(&headers, "outidx")); if ( evhttp_find_header(&headers, "inidx") != NULL ) inidx = atoi(evhttp_find_header(&headers, "inidx")); in = pipeline->getModuleById(evhttp_find_header(&headers, "in")); out = pipeline->getModuleById(evhttp_find_header(&headers, "out")); if ( in == NULL ) { evhttp_clear_headers(&headers); return web_error(req, "in object not found"); } if ( out == NULL && strcmp(evhttp_find_header(&headers, "out"), "NULL") != 0 ) { evhttp_clear_headers(&headers); return web_error(req, "out object not found"); } if ( strcmp(evhttp_find_header(&headers, "out"), "NULL") == 0 ) in->setInput(NULL, inidx); else in->setInput(out->getOutput(outidx), inidx); evhttp_clear_headers(&headers); web_message(req, "ok"); }
void web_pipeline_quit(struct evhttp_request *req, void *arg) { web_message(req, "bye"); want_quit = false; }
void web_pipeline_stop(struct evhttp_request *req, void *arg) { pipeline->stop(); web_message(req, "ok"); }
void web_status(struct evhttp_request *req, void *arg) { web_message(req, "ok"); }
void web_error(struct evhttp_request *req, const char* message) { return web_message(req, message, 0); }