Ejemplo n.º 1
0
// http_client_monitor
void * http_server_monitor_main (void * arg) {
	int i;
	time_t cur_time;
	http_server_t * server = (http_server_t *) arg;
	http_client_buffer_t * clients = &server->clients;

	http_client_t * cur_client;

	// 15초가 지난 소켓은 종료하도록	
	while (1) {
		time(&cur_time);
		sleep (5);
		printf ("monitor -time: %ld \n", cur_time);
		for (i = 0; i < clients->bufptr; i++) {
			cur_client = clients->buf[i];
			// http_client_check_timeout(cur_client);
			printf ("SOCK(%ld) in clients[%d] \n", cur_client->sock, i);

			if (cur_client->state == CLIENT_DEAD) {
				http_client_destroy(server, cur_client);
			}
		}
		printf ("------------------------\n\n");
	}

	return NULL;
}
Ejemplo n.º 2
0
void http_client_test2(void)
{
	aio_worker_init();

	pthread_t thread;
	bool running = true;
	thread_create(&thread, http_server_thread, &running);

	struct http_header_t headers[3];
	headers[0].name = "User-Agent";
	headers[0].value = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0";
	headers[1].name = "Accept-Language";
	headers[1].value = "en-US,en;q=0.5";
	headers[2].name = "Connection";
	headers[2].value = "keep-alive";

	// block IO
	void *http = http_client_create("127.0.0.1", PORT, 1);
	assert(0 == http_client_get(http, "/", headers, sizeof(headers)/sizeof(headers[0]), http_client_test_onreply, NULL));
	assert(0 == http_client_get(http, "/img/bdlogo.png", headers, sizeof(headers)/sizeof(headers[0]), http_client_test_onreply, NULL));
	assert(0 == http_client_get(http, "/", NULL, 0, http_client_test_onreply, NULL));
	http_client_destroy(http);

	// AIO
	int32_t ref = 0;
	http = http_client_create("127.0.0.1", PORT, 0);
	assert(0 == http_client_get(http, "/", headers, sizeof(headers)/sizeof(headers[0]), http_client_test_onreply, &ref));
	while(1 != ref) system_sleep(1000);
	assert(0 == http_client_get(http, "/img/bdlogo.png", headers, sizeof(headers)/sizeof(headers[0]), http_client_test_onreply, &ref));
	while(2 != ref) system_sleep(1000);
	assert(0 == http_client_get(http, "/", NULL, 0, http_client_test_onreply, &ref));
	while(3 != ref) system_sleep(1000);
	http_client_destroy(http);

	running = false;
	thread_destroy(thread);
	aio_worker_cleanup();
}
Ejemplo n.º 3
0
static void run_request_test (struct event_base *evbase, struct evdns_base *dns_base, TestID test_id)
{
    OutData *out;
    struct evbuffer *in_buf;
    char c = 'x';

    LOG_debug (HTTP_TEST, "===================== TEST ID : %d  =======================", test_id);
    out = g_new0 (OutData, 1);
    out->evbase = evbase;
    out->test_id = test_id;

    out->evhttp = evhttp_new (evbase);
    evhttp_bind_socket (out->evhttp, "127.0.0.1", 8080);
    evhttp_set_gencb (out->evhttp, on_request_gencb, out);
    
    //out->http = http_client_create (evbase, dns_base);
    in_buf = evbuffer_new ();

    http_client_set_cb_ctx (out->http, out);
    http_client_set_on_chunk_cb (out->http, on_input_data_cb);
    http_client_set_close_cb (out->http, on_http_close);


    //http_client_set_output_length (out->http, 1);
    //http_client_add_output_data (out->http, &c, 1);

    http_client_start_request_to_storage_url (out->http, Method_get, "/index.html", NULL, NULL);
    
    event_base_dispatch (evbase);
    
    http_client_destroy (out->http);

    LOG_debug (HTTP_TEST, "Resulting buff: %zd", evbuffer_get_length (in_buf));
    evbuffer_free (in_buf);

    g_free (out->first_line);
    g_free (out->header_line);
    evconnlistener_free (out->listener);
    evtimer_del (out->timeout);
    event_free (out->timeout);
    evbuffer_free (out->out_buf);
    evbuffer_free (out->in_file);

    g_free (out);
    LOG_debug (HTTP_TEST, "===================== END TEST ID : %d  =======================", test_id);

}
Ejemplo n.º 4
0
static void run_responce_test (struct event_base *evbase, struct evdns_base *dns_base, TestID test_id)
{
    OutData *out;
    struct evbuffer *in_buf;
    HttpClient *http;

    LOG_debug (HTTP_TEST, "===================== TEST ID : %d  =======================", test_id);
    out = g_new0 (OutData, 1);
    out->evbase = evbase;
    out->test_id = test_id;
    out->header_sent = FALSE;

    start_srv (out);
    
    //http = http_client_create (app);
    in_buf = evbuffer_new ();

    http = http_client_create (app);
    http_client_set_cb_ctx (http, in_buf);
    http_client_set_on_chunk_cb (http, on_input_data_cb);
    http_client_set_output_length (http, 1);

    http_client_start_request_to_storage_url (http, Method_get, "/index.html", NULL, NULL);
    
    event_base_dispatch (evbase);
    
    http_client_destroy (http);

    LOG_debug (HTTP_TEST, "Resulting buff: %zd", evbuffer_get_length (in_buf));
    evbuffer_free (in_buf);

    g_free (out->first_line);
    g_free (out->header_line);
    evconnlistener_free (out->listener);
    evtimer_del (out->timeout);
    event_free (out->timeout);
    evbuffer_free (out->out_buf);
    evbuffer_free (out->in_file);

    g_free (out);
    LOG_debug (HTTP_TEST, "===================== END TEST ID : %d  =======================", test_id);
}