/* 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 T_MAIN
#define T_MAIN
#include <pthread.h>
#include <time.h>
#include "dlist.h"
#include "meter.h"
#include "mainlog.h"
#include "srvclt.h"
#include "fsearch.h"
#include "msgqueue.h"
#include "dqueue.h"
class tMain{
int prev_speed_limit;
unsigned int LastTime;
GList *list_to_delete;
tMsgServer *server;
tMsgQueue *MsgQueue;
tFtpSearchCtrl *ftpsearch;
tMeter::BSize LastReadedBytes;
int TO_WAIT_IF_HERE,DONTRY2RUN;
void case_download_completed(tDownload *what);
void case_download_failed(tDownload *what);
void try_to_run_split(tDownload *what);
void stop_split(tDownload *what);
void check_split(tDownload *dwn);
int try_to_run_download(tDownload *what);
void absolute_delete_download(tDownload *what);
void add_dir(tDownload *parent,int http=0);
void print_info(tDownload *what);
void redirect(tDownload *what,d4xDownloadQueue *dq);
void del_all_from_list(int list,d4xDownloadQueue *queue=(d4xDownloadQueue *)NULL);
unsigned int get_precise_time();
void run_msg_server();
void speed_calculation(tDownload *what);
void run_without_face();
void main_circle_first(tDownload *dw);
void main_circle_second(tDownload *dwn);
void init_qtree(tQueue *list,d4xDownloadQueue *papa=(d4xDownloadQueue *)NULL);
void stop_all(tQueue *q);
void stop_all_offline(tQueue *q);
int try_to_switch_split(tDownload *dwn,tDownload *gp);
int try_to_switch(tDownload *dwn);
void prepare_for_stoping_pre(tDownload *what);
void sizequery_run_first(d4xDownloadQueue *q);
public:
d4x::SpeedQueue *SpeedScheduler;
int init();
void init_main_log();
void speed();
void main_circle();
void main_circle_nano1();
void main_circle_nano2();
void del_completed(d4xDownloadQueue *queue=(d4xDownloadQueue *)NULL);
void del_fataled(d4xDownloadQueue *queue=(d4xDownloadQueue *)NULL);
void del_all();
void rerun_failed();
void load_defaults();
void set_speed(int speed);
void check_for_remote_commands();
void redraw_logs();
void reinit_main_log();
void schedule_download(tDownload *what);
/* manipulation by url */
tDownload *find_url(const d4x::URL &adr);
void move_to_sizequery(tDownload *what);
void stop_download_url(const d4x::URL &adr);
void delete_download_url(const d4x::URL &adr);
void continue_download_url(const d4x::URL &adr);
/* manipulations with downloads */
void stop_download(tDownload *what);
int delete_download(tDownload *what,int flag=0);
void continue_download(tDownload *what);
int add_downloading(const char *adr,char *where=0,char *name=0,char *desc=0,const char *ref=0);
tDownload *add_downloading(tDownload *what,int to_top=0);
tDownload *add_downloading_to(tDownload *what,int to_top=0);
void ftp_search(tDownload *what,int type=0);
void ftp_search_name(char *name);
void add_download_message(tDownload *what);
void run(int argv, char **argc);
int set_auto_run(int a);
void run_after_quit();
void done();
void try_to_run_run(d4xDownloadQueue *papa);
/* next method used by URL-manager too */
void try_to_run_wait(d4xDownloadQueue *papa);
void insert_into_wait_list(tDownload *what,d4xDownloadQueue *dq);
/* next methods are public especialy for tFtpSearchCtrl */
void post_stopping(tDownload *what);
void prepare_for_stoping(tDownload *what);
int run_new_thread(tDownload *what);
void ftp_search_remove(tDownload *what);
void ftp_search_reping(tDownload *what);
void quit();
void switch_offline_mode();
};
typedef void (*d4xQTreeFunc) (d4xDownloadQueue *dq,void *p);
void d4x_qtree_for_each(d4xQTreeFunc dothis,void *a);
void *download_last(void *);
int get_port_by_proto(char *proto);
int calc_curent_run(char *host,int port);
void create_new_queue(char *name,d4xDownloadQueue *papa=(d4xDownloadQueue *)NULL);
int d4x_only_one_queue();
extern tMLog *MainLog;
extern tMeter *GlobalMeter;
extern tMeter *LocalMeter;
extern tMeter *GraphMeter;
extern tMeter *GraphLMeter;
extern d4xDownloadQueue *D4X_QUEUE;
extern tQueue D4X_QTREE;
extern tMain _aa_;
//************************************************/
#endif
syntax highlighted by Code2HTML, v. 0.9.1