diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2009-08-25 21:19:26 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2009-08-25 21:19:26 +0800 |
commit | 2cfc085237ebe43f82d2aedd3dd21b730874ac41 (patch) | |
tree | 46d98f4374cfd7d7dc23be8a2e1bb00db2801a7d | |
parent | 0f21921897fedb1fd34cc9435c56941daa7adfe7 (diff) |
wrapper: cleanup and wip for vodlist_getchannel
-rw-r--r-- | wrapper/ppswrapper-client.c | 297 | ||||
-rw-r--r-- | wrapper/ppswrapper-common.c | 23 | ||||
-rw-r--r-- | wrapper/ppswrapper-server.c | 72 |
3 files changed, 299 insertions, 93 deletions
diff --git a/wrapper/ppswrapper-client.c b/wrapper/ppswrapper-client.c index e803c6f..e5a504e 100644 --- a/wrapper/ppswrapper-client.c +++ b/wrapper/ppswrapper-client.c @@ -70,13 +70,16 @@ ppsw_client_connect_server(ppsw_client_t *self, int port) return 0; } -static void free_categories(ppscategory* cat); +static void +free_categories(ppscategory* cat); + +static void +ppsw_free_channel(ppschannel* ch); ppsw_t* ppsw_client_create(int port) { ppsw_client_t *self = malloc (sizeof (ppsw_client_t)); - int set = 1; if (!self) return NULL; @@ -93,6 +96,7 @@ ppsw_client_create(int port) goto spawn_server_failed; self->categories = NULL; + self->channel = NULL; self->callback = NULL; self->configdir = NULL; self->has_thread = 0; @@ -182,6 +186,7 @@ ppsw_client_destroy(ppsw_t* super) pthread_mutex_destroy (&self->mutex); free_categories(self->categories); + ppsw_free_channel(self->channel); free (self); } @@ -247,7 +252,7 @@ int ppsw_client_send_destroy(ppsw_t* super) int ppsw_client_send_close(ppsw_t* super) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -268,7 +273,7 @@ int ppsw_client_send_add_item(ppsw_t* super, const char* url, int flags) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -293,19 +298,16 @@ int ppsw_client_send_add_item(ppsw_t* super, int ppsw_client_send_remove_item(ppsw_t* super, int fd) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; + ppsw_packet_t p; - if (ppsw_writeb(super, PPSW_SYNC) < 0) - return -1; - if (ppsw_writes(super, PPSW_REMOVE_ITEM) < 0) + if (ppsw_packet_init(&p, PPSW_REMOVE_ITEM, 4) < 0) return -1; - if (ppsw_writes(super, super->seq++) < 0) - return -1; - if (ppsw_writes(super, 4) < 0) + if (ppsw_packet_writel(&p, fd) < 0) return -1; - if (ppsw_writel(super, fd) < 0) + if (ppsw_send_packet(super, &p) < 0) return -1; if (ppsw_read_reply_msg(super, &msg) < 0) @@ -319,7 +321,7 @@ int ppsw_client_send_play_item(ppsw_t* super, int fd, const char* valid_code) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -343,7 +345,7 @@ int ppsw_client_send_play_item(ppsw_t* super, int ppsw_client_send_stop_item(ppsw_t* super, int fd) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -364,7 +366,7 @@ int ppsw_client_send_stop_item(ppsw_t* super, int ppsw_client_send_get_file_length(ppsw_t* super, int fd) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -385,22 +387,17 @@ int ppsw_client_send_get_file_length(ppsw_t* super, int ppsw_client_send_seek(ppsw_t* super, int fd, unsigned int position) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; + ppsw_packet_t p; - if (ppsw_writeb(super, PPSW_SYNC) < 0) + if (ppsw_packet_init(&p, PPSW_SEEK, 8) < 0) return -1; - if (ppsw_writes(super, PPSW_SEEK) < 0) - return -1; - if (ppsw_writes(super, super->seq++) < 0) - return -1; - if (ppsw_writes(super, 8) < 0) + if (ppsw_packet_writel(&p, fd) < 0) return -1; - - if (ppsw_writel(super, fd) < 0) + if (ppsw_packet_writel(&p, position) < 0) return -1; - - if (ppsw_writel(super, position) < 0) + if (ppsw_send_packet(super, &p) < 0) return -1; if (ppsw_read_reply_msg(super, &msg) < 0) @@ -413,7 +410,7 @@ int ppsw_client_send_seek(ppsw_t* super, ppsvod_iteminfo *ppsw_client_send_get_item_info(ppsw_t* super, int fd) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_msg_t msg; ppsvod_iteminfo * info; ppsw_packet_t p; @@ -451,7 +448,7 @@ int ppsw_client_send_read(ppsw_t* super, int fd, char *buffer, unsigned int length, unsigned int position, struct timeval *wait_time) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_msg_t msg; uint32_t retval; int ret; @@ -494,7 +491,7 @@ int ppsw_client_send_read(ppsw_t* super, int fd, char *buffer, } error = retval; - if (ret > 0 && ppsw_packet_read(&p, buffer, ret) < 0) { + if (ret > 0 && ppsw_packet_read(&p, (uint8_t*)buffer, ret) < 0) { return -1; } else if (ret < 0) { if (error == PPSW_EAGAIN) @@ -509,7 +506,7 @@ int ppsw_client_send_read(ppsw_t* super, int fd, char *buffer, int ppsw_client_send_drop_read(ppsw_t* super, int fd) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -530,7 +527,7 @@ int ppsw_client_send_drop_read(ppsw_t* super, int ppsw_client_send_get_event(ppsw_t* super, int* index, pps_event* event) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_msg_t msg; uint32_t val; ppsw_packet_t p; @@ -570,7 +567,7 @@ int ppsw_client_send_get_event(ppsw_t* super, return -1; event->lparam = val; - if (ppsw_packet_read(&p, event->extra, PPS_EXTRA_MSG_LEN) < 0) + if (ppsw_packet_read(&p, (uint8_t*)event->extra, PPS_EXTRA_MSG_LEN) < 0) return -1; ppsw_packet_fini(&p); @@ -581,7 +578,7 @@ int ppsw_client_send_get_event(ppsw_t* super, int ppsw_client_send_get_time(ppsw_t* super, struct timeval* tv) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_msg_t msg; uint32_t sec; uint32_t usec; @@ -643,7 +640,7 @@ char* ppsw_client_send_get_config_dir(ppsw_t* super) int ppsw_client_send_default_config_dir(ppsw_t* super) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -663,14 +660,14 @@ int ppsw_client_send_default_config_dir(ppsw_t* super) int ppsw_client_send_save_config_dir(ppsw_t* super, const char* path) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; if (ppsw_packet_init(&p, PPSW_SAVE_CONFIG_DIR, ppsw_strlen(path) + 2) < 0) return -1; - if (ppsw_write_str(&p, path, -1) < 0) + if (ppsw_packet_write_str(&p, path, -1) < 0) return -1; if (ppsw_send_packet(super, &p) < 0) return -1; @@ -685,7 +682,7 @@ int ppsw_client_send_save_config_dir(ppsw_t* super, int ppsw_client_send_vodlist_init(ppsw_t* super) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -704,7 +701,7 @@ int ppsw_client_send_vodlist_init(ppsw_t* super) int ppsw_client_send_vodlist_uninit(ppsw_t* super) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -735,7 +732,8 @@ free_categories(ppscategory* cat) } static ppscategory* -ppsw_read_single_category(ppsw_packet_t* p) +ppsw_read_single_category(ppsw_packet_t* p, + int* hassubcat) { ppscategory* cat; uint32_t val; @@ -757,6 +755,9 @@ ppsw_read_single_category(ppsw_packet_t* p) if (ppsw_packet_readl(p, &val) < 0) goto read_name_fail; cat->subcatnum = val; + if (ppsw_packet_readl(p, &val) < 0) + goto read_name_fail; + *hassubcat = val; cat->psubcat = NULL; cat->next = NULL; return cat; @@ -775,12 +776,13 @@ ppsw_read_category(ppsw_packet_t* p, int catnum) head = last = NULL; for (i = 0; i < catnum; i++) { - cat = ppsw_read_single_category(p); + int hassubcat = 0; + cat = ppsw_read_single_category(p, &hassubcat); if (!cat) { free_categories(head); return NULL; } - if (cat->subcatnum) { + if (cat->subcatnum && hassubcat) { cat->psubcat = ppsw_read_category(p, cat->subcatnum); if (!cat->psubcat) { free_categories(cat); @@ -837,12 +839,202 @@ ppscategory* ppsw_client_send_vodlist_getcat(ppsw_t* super, int *catnum) return cat; } +static void +ppsw_free_items(ppsitem* item) +{ + if (!item) + return; + + ppsw_free_items(item->next); + free(item->ppsurl); + free(item->format); + free(item); +} + +static ppsitem* +ppsw_read_a_item(ppsw_packet_t* p) +{ + ppsitem* item; + uint32_t val; + + item = malloc(sizeof(*item)); + item->next = NULL; + if (!item) { + ppsw_packet_fini(p); + return NULL; + } + + if (ppsw_packet_readl(p, &val) < 0) + goto error; + item->id = val; + + if (ppsw_packet_readl(p, &val) < 0) + goto error; + item->index = val; + + if (ppsw_packet_readl(p, &val) < 0) + goto error; + item->size = val; + + if (ppsw_packet_readl(p, &val) < 0) + goto error; + item->duration = val; + + if (ppsw_packet_read_str(p, &item->format, NULL) < 0) + goto error; + + if (ppsw_packet_readl(p, &val) < 0) + goto error; + item->bitrate = val; + + if (ppsw_packet_read_str(p, &item->ppsurl, NULL) < 0) + goto read_url_error; + + if (ppsw_packet_readl(p, &val) < 0) + goto read_vip_flag; + item->vipflag = val; + + return item; + read_vip_flag: + free(item->ppsurl); + read_url_error: + free(item->format); + error: + free (item); + return NULL; +} + +static ppsitem* +ppsw_read_items(ppsw_packet_t* p, int itemnum) +{ + ppsitem* item, *head, *last; + + last = head = NULL; + for (; itemnum; itemnum--) { + item = ppsw_read_a_item(p); + if (!item) { + ppsw_packet_fini(p); + ppsw_free_items(head); + return NULL; + } + + if (!head) + head = item; + else if (last) + last->next = item; + last = item; + } + + return item; +} + +static void +ppsw_free_channel(ppschannel* ch) +{ + if (!ch) + return; + + ppsw_free_items(ch->pitems); + ppsw_free_channel(ch->next); + free(ch->name); + free(ch->director); + free(ch->actor); + free(ch->area); + free(ch->pubtime); + free(ch->lang); + free(ch->desc); + free(ch->BImgUrl); + free(ch->SImgUrl); + free(ch); +} + +static ppschannel* +ppsw_read_a_channel(ppsw_packet_t* p) +{ + ppschannel* ch; + uint32_t val; + + ch = calloc(sizeof(*ch), 1); + if (!ch) { + ppsw_packet_fini(p); + return NULL; + + } + if (ppsw_packet_read_str(p, &ch->name, NULL) < 0) + goto error; + if (ppsw_packet_read_str(p, &ch->director, NULL) < 0) + goto error; + if (ppsw_packet_read_str(p, &ch->actor, NULL) < 0) + goto error; + if (ppsw_packet_read_str(p, &ch->area, NULL) < 0) + goto error; + + if (ppsw_packet_readl(p, &val) < 0) + goto error; + ch->size = val; + + if (ppsw_packet_read_str(p, &ch->pubtime, NULL) < 0) + goto error; + + if (ppsw_packet_readl(p, &val) < 0) + goto error; + ch->duration = val; + + if (ppsw_packet_read_str(p, &ch->lang, NULL) < 0) + goto error; + if (ppsw_packet_read_str(p, &ch->desc, NULL) < 0) + goto error; + if (ppsw_packet_read_str(p, &ch->BImgUrl, NULL) < 0) + goto error; + if (ppsw_packet_read_str(p, &ch->SImgUrl, NULL) < 0) + goto error; + + if (ppsw_packet_readl(p, &val) < 0) + goto error; + ch->itemnum = val; + + if (ch->itemnum) { + ch->pitems = ppsw_read_items(p, ch->itemnum); + if (!ch->pitems) + goto error; + } + return ch; + error: + ppsw_free_channel(ch); + return NULL; +} + +static ppschannel* +ppsw_read_channel(ppsw_packet_t* p, int chnum) +{ + ppschannel* ch, *head, *last; + int i; + + head = last = NULL; + for (i = 0; i < chnum; i++) { + ch = ppsw_read_a_channel(p); + if (!ch) { + ppsw_free_channel(head); + return NULL; + } + if (!head) + head = ch; + else if (last) + last->next = ch; + last = ch; + } + + return 0; +} + ppschannel* ppsw_client_send_vodlist_getchannel(ppsw_t* super, int catid, int subcatid, int page_size, int page_num) { ppsw_client_t *self = (ppsw_client_t*)super; ppsw_msg_t msg; ppsw_packet_t p; + ppschannel* ch; + uint32_t val; if (ppsw_packet_init(&p, PPSW_VODLIST_GET_CHANNEL, 4 * 4) < 0) return NULL; @@ -865,13 +1057,26 @@ ppschannel* ppsw_client_send_vodlist_getchannel(ppsw_t* super, int catid, int su return NULL; } + if (ppsw_packet_readl(&p, &val) < 0) + return NULL; + + ch = NULL; + if (val) { + ch = ppsw_read_channel(&p, val); + if (!ch) + return NULL; + } + + ppsw_free_channel(self->channel); + self->channel = ch; + ppsw_packet_fini(&p); - return NULL; + return ch; } int ppsw_client_send_get_account_type(ppsw_t* super) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; @@ -890,7 +1095,7 @@ int ppsw_client_send_get_account_type(ppsw_t* super) int ppsw_client_send_get_vip_expire_time(ppsw_t* super, char* time) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_msg_t msg; ppsw_packet_t p; char* expire_time; @@ -923,14 +1128,14 @@ int ppsw_client_send_get_vip_expire_time(ppsw_t* super, char* time) int ppsw_client_send_charge(ppsw_t* super, const char* password) { - ppsw_client_t *self = (ppsw_client_t*)super; + //ppsw_client_t *self = (ppsw_client_t*)super; ppsw_reply_msg_t msg; ppsw_packet_t p; if (ppsw_packet_init(&p, PPSW_CHARGE, ppsw_strlen(password) + 2) < 0) return -1; - if (ppsw_write_str(&p, password, -1) < 0) + if (ppsw_packet_write_str(&p, password, -1) < 0) return -1; if (ppsw_send_packet(super, &p) < 0) return -1; diff --git a/wrapper/ppswrapper-common.c b/wrapper/ppswrapper-common.c index b585094..09e8123 100644 --- a/wrapper/ppswrapper-common.c +++ b/wrapper/ppswrapper-common.c @@ -239,7 +239,7 @@ ppsw_read_str(ppsw_t* self, if (!val) return -1; - ret = ppsw_read(self, val, len); + ret = ppsw_read(self, (uint8_t*)val, len); if (ret != len) { free (val); return -1; @@ -264,7 +264,7 @@ ppsw_write_str(ppsw_t* self, return -1; if (!len) return 2; - ret = ppsw_write (self, retval, len); + ret = ppsw_write (self, (const uint8_t*)retval, len); if (ret != len) return -1; return 2 + len; @@ -293,7 +293,7 @@ ppsw_read_msg(ppsw_t* self, perror("read message seqno error"); return -1; } - if (ppsw_reads(self, &msg->len) < 0) { + if (ppsw_readl(self, &msg->len) < 0) { perror("read message length error"); return -1; } @@ -501,6 +501,7 @@ ppsw_packet_readb(ppsw_packet_t* self, if (ret != 1) { perror("read error"); ppsw_packet_fini(self); + errno = ENOSPC; return -1; } @@ -527,10 +528,9 @@ ppsw_packet_read(ppsw_packet_t* self, uint8_t* retval, uint16_t len) { - int ret; - if (self->len - self->offset < len) { ppsw_packet_fini(self); + errno = ENOSPC; return -1; } @@ -544,8 +544,6 @@ ppsw_packet_write(ppsw_packet_t* self, const uint8_t* val, uint16_t len) { - int ret; - if (self->len - self->offset < len) { ppsw_packet_fini(self); return -1; @@ -580,7 +578,7 @@ ppsw_packet_read_str(ppsw_packet_t* self, return -1; } - ret = ppsw_packet_read(self, val, len); + ret = ppsw_packet_read(self, (uint8_t*)val, len); if (ret != len) { free (val); return -1; @@ -605,7 +603,7 @@ ppsw_packet_write_str(ppsw_packet_t* self, return -1; if (!len) return 2; - ret = ppsw_packet_write (self, retval, len); + ret = ppsw_packet_write (self, (const uint8_t*)retval, len); if (ret < 0) return -1; return 2 + len; @@ -614,8 +612,11 @@ ppsw_packet_write_str(ppsw_packet_t* self, int ppsw_packet_init(ppsw_packet_t* p, uint16_t id, - uint16_t len) + uint32_t len) { + if (len > 0xffffff) + return -1; + p->offset = 0; p->len = PPSW_MSG_HEADER_LEN + len; if (PPSW_MSG_HEADER_LEN + len < 64) @@ -629,7 +630,7 @@ ppsw_packet_init(ppsw_packet_t* p, ppsw_packet_writes(p, id); /* skip seqno */ p->offset += 2; - ppsw_packet_writes(p, len); + ppsw_packet_writel(p, len); return 0; } diff --git a/wrapper/ppswrapper-server.c b/wrapper/ppswrapper-server.c index b803d2f..fde3ad4 100644 --- a/wrapper/ppswrapper-server.c +++ b/wrapper/ppswrapper-server.c @@ -140,7 +140,7 @@ ppsw_get_event_buf(ppsw_server_t* self, return buf; } -static ppsw_event_buf_t* +static void ppsw_remove_event_buf(ppsw_server_t* self, int index) { @@ -252,7 +252,6 @@ send_dir_reply(ppsw_server_t* self, char* dir) { int len; - int ret; ppsw_packet_t p; if (dir) @@ -295,7 +294,7 @@ send_read_reply(ppsw_server_t* self, goto done; if (buffer && retval > 0) - ret = ppsw_packet_write(&p, buffer, length); + ret = ppsw_packet_write(&p, (uint8_t*)buffer, length); else ret = 0; @@ -312,7 +311,6 @@ send_event_reply(ppsw_server_t* self, int index, pps_event* event) { int len; - int ret = -1; ppsw_packet_t p; //printf ("reply event: index %d id: %d\n", index, event ? event->id : -1); @@ -334,7 +332,7 @@ send_event_reply(ppsw_server_t* self, return -1; if (ppsw_packet_writel(&p, event->lparam) < 0) return -1; - if (ppsw_packet_write(&p, event->extra, PPS_EXTRA_MSG_LEN) < 0) + if (ppsw_packet_write(&p, (uint8_t*)event->extra, PPS_EXTRA_MSG_LEN) < 0) return -1; } @@ -344,7 +342,7 @@ send_event_reply(ppsw_server_t* self, static size_t ppsw_cal_single_category_size(ppscategory* cat) { - return 4 + 2 + ppsw_strlen(cat->name) + 4 + 4; + return 4 + 2 + ppsw_strlen(cat->name) + 4 + 4 + 4; } static size_t @@ -370,9 +368,10 @@ ppsw_write_single_category(ppsw_packet_t* p, ppscategory* cat) return -1; if (ppsw_packet_writel(p, cat->type) < 0) return -1; - if (ppsw_packet_writel(p, cat->psubcat ? cat->subcatnum : 0) < 0) + if (ppsw_packet_writel(p, cat->subcatnum) < 0) + return -1; + if (ppsw_packet_writel(p, cat->psubcat ? 1 : 0) < 0) return -1; - return 0; } @@ -432,22 +431,22 @@ ppsw_cal_item_size(ppsitem* item) static size_t ppsw_cal_channel_size(ppschannel* ch) { - int i; size_t size = 0; for (; ch; ch = ch->next) { + size += 2 * 9 + 3 * 4; + size += ppsw_strlen(ch->name); + size += ppsw_strlen(ch->director); + size += ppsw_strlen(ch->actor); + size += ppsw_strlen(ch->area); + size += ppsw_strlen(ch->pubtime); + size += ppsw_strlen(ch->lang); + size += ppsw_strlen(ch->desc); + size += ppsw_strlen(ch->BImgUrl); + size += ppsw_strlen(ch->SImgUrl); + if (ch->pitems && ch->itemnum) size += ppsw_cal_item_size(ch->pitems); - size += 2 * 9 + 3 * 4; - size + ppsw_strlen(ch->name); - size + ppsw_strlen(ch->director); - size + ppsw_strlen(ch->actor); - size + ppsw_strlen(ch->area); - size + ppsw_strlen(ch->pubtime); - size + ppsw_strlen(ch->lang); - size + ppsw_strlen(ch->desc); - size + ppsw_strlen(ch->BImgUrl); - size + ppsw_strlen(ch->SImgUrl); } return size; } @@ -480,8 +479,6 @@ ppsw_write_items(ppsw_packet_t* p, ppsitem* item) static int ppsw_write_channel(ppsw_packet_t* p, ppschannel* ch) { - int i; - for (; ch; ch = ch->next) { if (ppsw_packet_write_str(p, ch->name, -1) < 0) return -1; @@ -519,20 +516,28 @@ send_channel_reply(ppsw_server_t* self, ppschannel* ch) { int len; - int ret = -1; + int numch; ppsw_packet_t p; + ppschannel* tmp = ch; if (ch) - len = ppsw_cal_channel_size(ch); + len = 4 + ppsw_cal_channel_size(ch); else - len = 0; + len = 4; if (ppsw_packet_init(&p, PPSW_REPLY_GET_CHANNEL, len) < 0) return -1; + for (numch = 0; tmp; tmp = tmp->next) + numch++; + if (ppsw_packet_writel(&p, numch) < 0) + return -1; + + printf ("ch:%p numch: %d size: %d\n", ch, numch, len); if (ch && ppsw_write_channel(&p, ch) < 0) return -1; + printf ("here\n"); return ppsw_reply_packet(&self->base, &p); } @@ -541,7 +546,6 @@ send_expire_time_reply(ppsw_server_t* self, char* buffer, int retval) { int len; - int ret = -1; ppsw_packet_t p; //printf ("read length: %d\n", length); @@ -638,7 +642,6 @@ process_remove_item(ppsw_server_t* self, { int ret; uint32_t fd; - ppsvod_iteminfo * info; if (msg->len != 4) return send_reply(self, -1); @@ -661,7 +664,6 @@ process_play_item(ppsw_server_t* self, ppsw_packet_t* p) { char *valid_code; - uint16_t len; uint32_t fd; int ret; @@ -739,7 +741,6 @@ process_drop_read(ppsw_server_t* self, const ppsw_msg_t* msg, ppsw_packet_t* p) { - int ret; uint32_t fd; if (msg->len != 4) @@ -769,7 +770,7 @@ process_seek(ppsw_server_t* self, if (ppsw_packet_readl(p, &pos) < 0) return send_reply(self, -1); - printf ("seek_item(%d)\n", fd, pos); + printf ("seek_item(%d, %d)\n", fd, pos); ret = ppsvod_seek(fd, pos); return send_reply(self, ret); @@ -798,7 +799,6 @@ process_get_item_info(ppsw_server_t* self, const ppsw_msg_t* msg, ppsw_packet_t* p) { - int ret; uint32_t fd; ppsvod_iteminfo * info; @@ -819,7 +819,6 @@ process_get_event(ppsw_server_t* self, const ppsw_msg_t* msg, ppsw_packet_t* p) { - uint32_t fd; int index; pps_event event; @@ -890,7 +889,6 @@ process_vod_list_get_cat(ppsw_server_t* self, const ppsw_msg_t* msg, ppsw_packet_t* p) { - int ret; int catnum = 0; ppscategory* cat; @@ -904,8 +902,6 @@ process_get_account_type(ppsw_server_t* self, ppsw_packet_t* p) { int ret; - int catnum; - ppscategory* cat; ret = ppsvod_get_account_type (); return send_reply (self, ret); @@ -944,7 +940,6 @@ process_vod_list_get_channel(ppsw_server_t* self, const ppsw_msg_t* msg, ppsw_packet_t* p) { - int ret; uint32_t catid; uint32_t subcatid; uint32_t page_size; @@ -953,6 +948,12 @@ process_vod_list_get_channel(ppsw_server_t* self, if (ppsw_packet_readl(p, &catid) < 0) return send_channel_reply (self, NULL); + if (ppsw_packet_readl(p, &subcatid) < 0) + return send_channel_reply (self, NULL); + if (ppsw_packet_readl(p, &page_size) < 0) + return send_channel_reply (self, NULL); + if (ppsw_packet_readl(p, &page_num) < 0) + return send_channel_reply (self, NULL); ch = pps_vodlist_getchannel(catid, subcatid, page_size, page_num); return send_channel_reply (self, ch); } @@ -1023,7 +1024,6 @@ ppsw_server_run(ppsw_t* super, int infinit) self->done = 0; while (!self->done) { - struct timeval time; struct linger linger; int done = 0; |