/* WebDownloader for X-Window
* Copyright (C) 1999-2002 Koshelev Maxim
* This Program is free but not GPL!!! You can't modify it
* without agreement with author. You can't distribute modified
* program but you can distribute unmodified program.
*
* This program 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.
*/
#ifndef __DOWNLOADER_SEGMENTS_HEADER__
#define __DOWNLOADER_SEGMENTS_HEADER__
#include "mutex.h"
#include "queue.h"
typedef unsigned long long segoff_t;
struct tSegment{
segoff_t begin,end;
long offset_in_file;
tSegment *next,*prev;
tSegment();
void print();
int save(int fd);
~tSegment();
};
class tSegmentator{
int autosave_counter;
tSegment *FIRST,*LAST;
tSegment *HEAP;
d4x::Mutex lockmutex;
int fd;
char *filename;
segoff_t total;
int load();
void lock();
void unlock();
tSegment *seg_alloc();
void seg_free(tSegment *seg);
public:
tSegmentator();
tSegmentator(char *path);
void init(char *path);
void print();
int insert(segoff_t begin, segoff_t end);
void truncate(segoff_t shift);
tSegment *get_first();
tSegment *to_holes(segoff_t size);
int one_segment();
segoff_t get_total();
void done();
int save();
void complete();
void lock_public();
void unlock_public();
~tSegmentator();
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1