int main(int argc, char** argv) { http_server_t *server = http_server_create("0.0.0.0", 8000); http_server_add_handler(server, ".*", test_request_handler); http_server_run(server); return 0; }
WebSession::WebSession(socket_t sock, const char* ip, int port) { m_ip = ip; m_sock = sock; m_port = port; m_http = http_server_create(sock); dlog_log("new client[%s.%d] connected.\n", ip, port); }
int main() { pensioners_t *pensioners = pensioners_create();//создаем пустой список пенсионеров http_server_t *http_server = http_server_create(pensioners);//создаем структуру сервер для пенсионеров http_server_start (http_server); http_server_delete (http_server); pensioners_delete (pensioners); return 0; }
void hls_server_test(const char* ip, int port) { aio_socket_init(1); http_server_init(); void* http = http_server_create(ip, port); http_server_set_handler(http, hls_server_onhttp, http); // http process while(aio_socket_process(1000) >= 0) { } http_server_destroy(http); http_server_cleanup(); aio_socket_clean(); }
int main( int /*argc*/, char** /*argv*/ ) { http_server_t server = http_server_create( 1337, 16, 0x0 ); if( server == 0x0 ) return 1; bool running = true; while( running ) { http_server_request* req; while( ( req = http_server_poll( server, 0x0 ) ) != 0x0 ) { switch( req->type ) { case HTTP_SERVER_REQUEST_GET: if(false /*not file exists*/) { http_server_fail_request( req, 404 ); // method not allowed. } else { http_server_complete_request( req, "application/json", "{ \"test\" : true }", 6 ); } break; case HTTP_SERVER_REQUEST_HEAD: case HTTP_SERVER_REQUEST_POST: case HTTP_SERVER_REQUEST_PUT: case HTTP_SERVER_REQUEST_DELETE: http_server_fail_request( req, 405 ); // method not allowed. break; default: http_server_fail_request( req, 500 ); // internal server error. break; } } } http_server_destroy( server ); }
void dash_dynamic_test(const char* ip, int port, const char* file, int width, int height) { std::shared_ptr<dash_playlist_t> live(new dash_playlist_t()); live->mpd = dash_mpd_create(DASH_DYNAMIC, dash_mpd_onsegment, live.get()); live->name = "live"; live->width = width; live->height = height; live->adapation_audio = live->adapation_video = -1; aio_worker_init(4); http_server_t* http = http_server_create(ip, port); http_server_set_handler(http, http_server_route, live.get()); http_server_addroute("/live/", dash_server_onlive); http_server_addroute("/vod/", dash_server_onvod); // live worker dash_live_worker(file, live.get()); http_server_destroy(http); aio_worker_clean(4); dash_mpd_destroy(live->mpd); }
/* Create a http-channel listener, syntax [host:]port */ int http_init(const char *addr, struct conf_server *server, const char *record_fname) { IOCHAN c; int l; struct protoent *p; struct sockaddr_in myaddr; int one = 1; const char *pp; short port; FILE *record_file = 0; yaz_log(YLOG_LOG, "HTTP listener %s", addr); if (record_fname) { record_file = fopen(record_fname, "wb"); if (!record_file) { yaz_log(YLOG_FATAL|YLOG_ERRNO, "fopen %s", record_fname); return 1; } } memset(&myaddr, 0, sizeof myaddr); myaddr.sin_family = AF_INET; pp = strchr(addr, ':'); if (pp) { WRBUF w = wrbuf_alloc(); struct hostent *he; wrbuf_write(w, addr, pp - addr); wrbuf_puts(w, ""); he = gethostbyname(wrbuf_cstr(w)); wrbuf_destroy(w); if (!he) { yaz_log(YLOG_FATAL, "Unable to resolve '%s'", addr); return 1; } memcpy(&myaddr.sin_addr.s_addr, he->h_addr_list[0], he->h_length); port = atoi(pp + 1); } else { port = atoi(addr); myaddr.sin_addr.s_addr = INADDR_ANY; } myaddr.sin_port = htons(port); if (!(p = getprotobyname("tcp"))) { return 1; } if ((l = socket(PF_INET, SOCK_STREAM, p->p_proto)) < 0) yaz_log(YLOG_FATAL|YLOG_ERRNO, "socket"); if (setsockopt(l, SOL_SOCKET, SO_REUSEADDR, (char*) &one, sizeof(one)) < 0) return 1; if (bind(l, (struct sockaddr *) &myaddr, sizeof myaddr) < 0) { yaz_log(YLOG_FATAL|YLOG_ERRNO, "bind"); return 1; } if (listen(l, SOMAXCONN) < 0) { yaz_log(YLOG_FATAL|YLOG_ERRNO, "listen"); return 1; } server->http_server = http_server_create(); server->http_server->record_file = record_file; server->http_server->listener_socket = l; c = iochan_create(l, http_accept, EVENT_INPUT | EVENT_EXCEPT, "http_server"); iochan_setdata(c, server); iochan_add(server->iochan_man, c); return 0; }