From a52ff39850420003a5600819ed9f95adf8503319 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Tue, 24 Jan 2012 22:56:26 +0900 Subject: [PATCH] Renamed spdylay_session_init as spdylay_session_new. Added session arg to cb. Now recv_callback and send_callback accepts session argument. spdylay_session_free was also renamed as spdylay_session_del. --- lib/includes/spdylay/spdylay.h | 20 +++++++++++--------- lib/spdylay_session.c | 12 ++++++------ tests/spdylay_session_test.c | 14 ++++++++------ 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/lib/includes/spdylay/spdylay.h b/lib/includes/spdylay/spdylay.h index ef0434d..ae2ca10 100644 --- a/lib/includes/spdylay/spdylay.h +++ b/lib/includes/spdylay/spdylay.h @@ -46,25 +46,27 @@ typedef enum { SPDYLAY_MSG_MORE } spdylay_io_flag; +struct spdylay_session; +typedef struct spdylay_session spdylay_session; + typedef ssize_t (*spdylay_send_callback) -(const uint8_t *data, size_t length, int flags, void *user_data); +(spdylay_session *session, + const uint8_t *data, size_t length, int flags, void *user_data); typedef ssize_t (*spdylay_recv_callback) -(uint8_t *buf, size_t length, int flags, void *user_data); +(spdylay_session *session, + uint8_t *buf, size_t length, int flags, void *user_data); typedef struct { spdylay_send_callback send_callback; spdylay_recv_callback recv_callback; } spdylay_session_callbacks; -struct spdylay_session; -typedef struct spdylay_session spdylay_session; +int spdylay_session_client_new(spdylay_session **session_ptr, + const spdylay_session_callbacks *callbacks, + void *user_data); -int spdylay_session_client_init(spdylay_session **session_ptr, - const spdylay_session_callbacks *callbacks, - void *user_data); - -void spdylay_session_free(struct spdylay_session *session); +void spdylay_session_del(spdylay_session *session); int spdylay_session_send(spdylay_session *session); diff --git a/lib/spdylay_session.c b/lib/spdylay_session.c index 5eebe8b..e1e755b 100644 --- a/lib/spdylay_session.c +++ b/lib/spdylay_session.c @@ -41,9 +41,9 @@ int spdylay_outbound_item_compar(const void *lhsx, const void *rhsx) return lhs->pri-rhs->pri; } -int spdylay_session_client_init(spdylay_session **session_ptr, - const spdylay_session_callbacks *callbacks, - void *user_data) +int spdylay_session_client_new(spdylay_session **session_ptr, + const spdylay_session_callbacks *callbacks, + void *user_data) { int r; *session_ptr = malloc(sizeof(spdylay_session)); @@ -109,7 +109,7 @@ static void spdylay_outbound_item_free(spdylay_outbound_item *item) free(item->frame); } -void spdylay_session_free(spdylay_session *session) +void spdylay_session_del(spdylay_session *session) { spdylay_map_each(&session->streams, spdylay_free_streams); spdylay_map_free(&session->streams); @@ -239,7 +239,7 @@ int spdylay_session_send(spdylay_session *session) } data = session->aob.framebuf + session->aob.framebufoff; datalen = session->aob.framebuflen - session->aob.framebufoff; - sentlen = session->callbacks.send_callback(data, datalen, 0, + sentlen = session->callbacks.send_callback(session, data, datalen, 0, session->user_data); if(sentlen < 0) { if(sentlen == SPDYLAY_ERR_WOULDBLOCK) { @@ -281,7 +281,7 @@ static ssize_t spdylay_recv(spdylay_session *session) } recv_max = session->ibuf.buf+sizeof(session->ibuf.buf)-session->ibuf.limit; r = session->callbacks.recv_callback - (session->ibuf.limit, recv_max, 0, session->user_data); + (session, session->ibuf.limit, recv_max, 0, session->user_data); if(r > 0) { if(r > recv_max) { return SPDYLAY_ERR_CALLBACK_FAILURE; diff --git a/tests/spdylay_session_test.c b/tests/spdylay_session_test.c index 662dd2e..472e3d3 100644 --- a/tests/spdylay_session_test.c +++ b/tests/spdylay_session_test.c @@ -60,7 +60,8 @@ static void scripted_data_feed_init(scripted_data_feed *df, df->feedseq[0] = data_length; } -static ssize_t scripted_recv_callback(uint8_t* data, size_t len, int flags, +static ssize_t scripted_recv_callback(spdylay_session *session, + uint8_t* data, size_t len, int flags, void *user_data) { scripted_data_feed *df = ((my_user_data*)user_data)->df; @@ -75,7 +76,8 @@ static ssize_t scripted_recv_callback(uint8_t* data, size_t len, int flags, return wlen; } -static ssize_t accumulator_send_callback(const uint8_t *buf, size_t len, +static ssize_t accumulator_send_callback(spdylay_session *session, + const uint8_t *buf, size_t len, int flags, void* user_data) { accumulator *acc = ((my_user_data*)user_data)->acc; @@ -115,7 +117,7 @@ void test_spdylay_session_recv() spdylay_frame frame; user_data.df = &df; - spdylay_session_client_init(&session, &callbacks, &user_data); + spdylay_session_client_new(&session, &callbacks, &user_data); spdylay_frame_syn_stream_init(&frame.syn_stream, 0, 0, 0, 3, dup_nv(nv)); framelen = spdylay_frame_pack_syn_stream(&framedata, &frame.syn_stream, &session->hd_deflater); @@ -124,7 +126,7 @@ void test_spdylay_session_recv() spdylay_frame_syn_stream_free(&frame.syn_stream); CU_ASSERT(0 == spdylay_session_recv(session)); - spdylay_session_free(session); + spdylay_session_del(session); } void test_spdylay_session_add_frame() @@ -150,7 +152,7 @@ void test_spdylay_session_add_frame() uint32_t temp32; acc.length = 0; user_data.acc = &acc; - CU_ASSERT(0 == spdylay_session_client_init(&session, &callbacks, &user_data)); + CU_ASSERT(0 == spdylay_session_client_new(&session, &callbacks, &user_data)); frame = malloc(sizeof(spdylay_frame)); spdylay_frame_syn_stream_init(&frame->syn_stream, 0, 0, 0, 3, dup_nv(nv)); @@ -171,5 +173,5 @@ void test_spdylay_session_add_frame() temp32 = (acc.buf[16] >> 6) & 0x3; CU_ASSERT(3 == temp32); - spdylay_session_free(session); + spdylay_session_del(session); }