Make zckDL struct public and add in function to get temporary fd and
authorJonathan Dieter <jdieter@gmail.com>
Sun, 11 Mar 2018 08:56:41 +0000 (10:56 +0200)
committerJonathan Dieter <jdieter@gmail.com>
Sun, 11 Mar 2018 08:56:41 +0000 (10:56 +0200)
download range based on url and zckDL

Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
include/zck.h
src/lib/zck_private.h

index 9ea488d360971c67e3561df4ec2e644405b8d30c..039ed55883af2430fdabc42c3aa5b020b5cd49b0 100644 (file)
@@ -55,8 +55,19 @@ typedef struct zckIndexInfo {
     zckIndex *first;
 } zckIndexInfo;
 
+typedef struct zckDLPriv zckDLPriv;
+
+typedef struct zckDL {
+    size_t dl;
+    size_t ul;
+    int dst_fd;
+    char *boundary;
+    zckIndexInfo index;
+    zckRangeInfo info;
+    zckDLPriv *priv;
+} zckDL;
+
 typedef struct zckCtx zckCtx;
-typedef struct zckDL zckDL;
 
 zckCtx *zck_create();
 void zck_free(zckCtx *zck);
@@ -81,6 +92,7 @@ int zck_get_full_digest_size(zckCtx *zck);
 int zck_get_chunk_digest_size(zckCtx *zck);
 int zck_get_full_hash_type(zckCtx *zck);
 int zck_get_chunk_hash_type(zckCtx *zck);
+int zck_get_tmp_fd();
 const char *zck_hash_name_from_type(uint8_t hash_type);
 const char *zck_comp_name_from_type(uint8_t comp_type);
 int zck_range_calc_segments(zckRangeInfo *info, unsigned int max_ranges);
@@ -95,6 +107,7 @@ void zck_dl_free(zckDL *dl);
 int zck_dl_get_header(zckCtx *zck, zckDL *dl, char *url);
 size_t zck_dl_get_bytes_downloaded(zckDL *dl);
 size_t zck_dl_get_bytes_uploaded(zckDL *dl);
+int zck_dl_range(zckDL *dl, char *url);
 char *zck_dl_get_range(unsigned int start, unsigned int end);
 #endif
 
index 9dc965d86557d49084da975672fff4a6d41b1c37..28de9ac15ca817ef8a9f18d5eae67a33aa4e6376 100644 (file)
@@ -33,12 +33,18 @@ typedef struct {
 /*typedef struct zckIndex zckIndex;*/
 typedef void CURL;
 
-typedef struct zckDL {
-    size_t dl;
-    size_t ul;
-    zckIndexInfo index;
+typedef struct zckMP {
+    int state;
+    size_t length;
+    char *buffer;
+    size_t buffer_len;
+} zckMP;
+
+typedef struct zckDLPriv {
     CURL *curl_ctx;
-} zckDL;
+    zckMP *mp;
+    int parser_started;
+} zckDLPriv;
 
 typedef struct zckComp {
     int started;