summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2009-09-02 19:12:21 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2009-09-02 19:12:21 +0800
commitd5e3272a77f459a7e6e53e2bdfb94f0f2c8e25c4 (patch)
treea7c6d38aa8c886d8d65391d5ea2d9d665840dde5
parent418d2e6c8bd266423a3b9dcbe73b0910fac37b6d (diff)
cwrapper: add protocol for check_url.
All libpps' api are implemented now
-rw-r--r--wrapper/ppswrapper-client.c22
-rw-r--r--wrapper/ppswrapper-server-main.c3
-rw-r--r--wrapper/ppswrapper-server.c18
-rw-r--r--wrapper/ppswrapper.c6
-rw-r--r--wrapper/ppswrapper.h3
5 files changed, 51 insertions, 1 deletions
diff --git a/wrapper/ppswrapper-client.c b/wrapper/ppswrapper-client.c
index 1e1c42b..6026704 100644
--- a/wrapper/ppswrapper-client.c
+++ b/wrapper/ppswrapper-client.c
@@ -1383,3 +1383,25 @@ int ppsw_client_send_charge(ppsw_t* super, const char* password)
return msg.retval;
}
+
+int ppsw_client_send_check_url(ppsw_t* super, const char* url)
+{
+ //ppsw_client_t *self = (ppsw_client_t*)super;
+ ppsw_reply_msg_t msg;
+ ppsw_packet_t p;
+
+ if (ppsw_packet_init(&p, PPSW_CHECK_URL,
+ ppsw_strlen(url) + 2) < 0)
+ return -1;
+ if (ppsw_packet_write_str(&p, url, -1) < 0)
+ return -1;
+ if (ppsw_send_packet(super, &msg.base, &p) < 0)
+ return -1;
+
+ if (ppsw_client_read_reply_msg(super, msg.base.seq, &msg) < 0)
+ return -1;
+ if (msg.base.id != PPSW_REPLY)
+ return -1;
+
+ return msg.retval;
+}
diff --git a/wrapper/ppswrapper-server-main.c b/wrapper/ppswrapper-server-main.c
index f7f3c3d..b7c984b 100644
--- a/wrapper/ppswrapper-server-main.c
+++ b/wrapper/ppswrapper-server-main.c
@@ -25,6 +25,7 @@
int main(int argc, char **argv)
{
ppsw_t* ppsw;
+ int ret;
int c;
int fd = -1;
int port = -1;
@@ -53,7 +54,7 @@ int main(int argc, char **argv)
}
signal (SIGPIPE, SIG_IGN);
- chdir ("/tmp/");
+ ret = chdir ("/tmp/");
ppsw = ppsw_server_create(fd, port);
if (!ppsw) {
diff --git a/wrapper/ppswrapper-server.c b/wrapper/ppswrapper-server.c
index 1cdfa5a..c6667be 100644
--- a/wrapper/ppswrapper-server.c
+++ b/wrapper/ppswrapper-server.c
@@ -980,6 +980,22 @@ process_charge (ppsw_server_t* self,
}
static int
+process_check_url (ppsw_server_t* self,
+ const ppsw_msg_t* msg,
+ ppsw_packet_t* p)
+{
+ int ret;
+ char* url;
+
+ if (ppsw_packet_read_str (p, &url, NULL) < 0)
+ return send_reply (self, msg->seq, -1);
+
+ ret = ppsvod_check_url (url);
+ free (url);
+ return send_reply (self, msg->seq, ret);
+}
+
+static int
process_vod_list_get_channel(ppsw_server_t* self,
const ppsw_msg_t* msg,
ppsw_packet_t* p)
@@ -1058,6 +1074,8 @@ ppsw_server_process_msg (ppsw_server_t* self,
return process_get_vip_expire_time(self, msg, p);
else if (msg->id == PPSW_CHARGE)
return process_charge(self, msg, p);
+ else if (msg->id == PPSW_CHECK_URL)
+ return process_check_url(self, msg, p);
return -1;
}
diff --git a/wrapper/ppswrapper.c b/wrapper/ppswrapper.c
index 23a05a9..682f8d4 100644
--- a/wrapper/ppswrapper.c
+++ b/wrapper/ppswrapper.c
@@ -212,6 +212,12 @@ int ppsvod_get_file_length(int fd)
int ppsvod_check_url(const char* url)
{
+ int ret;
+
+ if (!ppsw_state.client)
+ return -1;
+
+ ret = ppsw_client_send_check_url(ppsw_state.client, url);
return -1;
}
diff --git a/wrapper/ppswrapper.h b/wrapper/ppswrapper.h
index d795a2d..2d6f5a8 100644
--- a/wrapper/ppswrapper.h
+++ b/wrapper/ppswrapper.h
@@ -51,6 +51,7 @@ typedef enum {
PPSW_DEFAULT_CONFIG_DIR,
PPSW_GET_ACCOUNT_TYPE,
PPSW_GET_VIP_EXPIRE_TIME,
+ PPSW_CHECK_URL,
PPSW_CHARGE,
PPSW_VODLIST_INIT,
PPSW_VODLIST_UNINIT,
@@ -302,6 +303,8 @@ int ppsw_client_send_get_vip_expire_time(ppsw_t* super, char* time);
int ppsw_client_send_charge(ppsw_t* super, const char* password);
+int ppsw_client_send_check_url(ppsw_t* super, const char* url);
+
int
ppsw_write_item_info(ppsw_packet_t* self,
ppsvod_iteminfo* info);