summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'seggetd/segment.h')
-rw-r--r--seggetd/segment.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/seggetd/segment.h b/seggetd/segment.h
new file mode 100644
index 0000000..d64d088
--- /dev/null
+++ b/seggetd/segment.h
@@ -0,0 +1,100 @@
+/*
+* Copyright (C) 2010 Robin H.Johnson, Ovechko Kostyantyn <fastinetserver@gmail.com>.
+*
+* Project: IDFetch.
+* Developer: Ovechko Kostyantyn Olexandrovich (Kharkiv State Technical University of Construction and Architecture, Ukraine).
+* Mentor: Robin H. Johnson (Gentoo Linux: Developer, Trustee & Infrastructure Lead).
+* Mentoring organization: Gentoo Linux.
+* Sponsored by GSOC 2010.
+*
+* This file is part of Segget.
+*
+* Segget is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version.
+*
+* Segget is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with Segget; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef __SEGMENT_H__
+#define __SEGMENT_H__
+using namespace std;
+
+#include <sstream>
+#include <fstream>
+#include <cstring>
+#include <string>
+#include <iostream>
+#include <stdio.h>
+#include <cstdio>
+#include <ncurses.h>
+#include <curl/curl.h>
+#include "settings.h"
+
+#include "distfile.h"
+class Tdistfile;
+#include "stats.h"
+
+
+#define MAX_CONNECTS 20
+//extern Tsettings settings;
+//unsigned long downloaded_bytes=0;
+size_t write_data(void *buffer, size_t size, size_t nmemb, void *cur_segment);
+
+enum Tsegment_status{SWAITING, SDOWNLOADING, SDOWNLOADED, SFAILED};
+
+class Tsegment{
+ private:
+ CURL *easyhandle;
+ char* urllist;
+ public:
+ string file_name;
+ Tsegment_status status;
+ uint try_num;
+ Tdistfile* parent_distfile;
+ uint connection_num;
+ uint segment_num;
+ uint segment_size;
+ unsigned long downloaded_bytes;
+ string url;
+ string range;
+ ofstream segment_file;
+ Tsegment():
+ easyhandle(0),
+ urllist(0),
+ file_name(""),
+ status(SWAITING),
+ try_num(0),
+ parent_distfile(0),
+ connection_num(0),
+ segment_num(0),
+ segment_size(1000),
+ downloaded_bytes(0),
+ url(""),
+ range(""),
+ segment_file(0)
+ {};
+ Tsegment(const Tsegment &L); // copy constructor
+ Tsegment & operator=(const Tsegment &L);
+ ~Tsegment();
+ bool segment_verification_is_ok();
+ void set_segment(Tdistfile *prnt_distfile, uint seg_num, string distfile_name, ulong default_seg_size, ulong range_end);
+ string get_file_name(){return file_name;};
+ uint start(CURLM *cm, uint con_num, uint network_num, uint distfile_num, string url);
+ uint add_easy_handle_to_multi(CURLM *cm, uint network_num);
+};
+
+extern Tsegment *segments_in_progress[MAX_CONNECTS];
+
+string statusToString(Tsegment_status the_status);
+void show_progress(double time_diff);
+size_t write_data(void *buffer, size_t size, size_t nmemb, void *cur_segment);
+#endif \ No newline at end of file