2002-04-30 22:22:54 +00:00
|
|
|
// The contents of this file are subject to the Mozilla Public License
|
|
|
|
// Version 1.0 (the "License"); you may not use this file except in
|
|
|
|
// compliance with the License. You may obtain a copy of the License at
|
|
|
|
// http://www.mozilla.org/MPL/
|
|
|
|
//
|
|
|
|
// Software distributed under the License is distributed on an "AS IS"
|
|
|
|
// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
|
|
|
// License for the specific language governing rights and limitations
|
|
|
|
// under the License.
|
|
|
|
//
|
|
|
|
// The Original Code is the Berkeley Open Infrastructure for Network Computing.
|
|
|
|
//
|
|
|
|
// The Initial Developer of the Original Code is the SETI@home project.
|
|
|
|
// Portions created by the SETI@home project are Copyright (C) 2002
|
|
|
|
// University of California at Berkeley. All Rights Reserved.
|
|
|
|
//
|
|
|
|
// Contributor(s):
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef _FILE_XFER_
|
|
|
|
#define _FILE_XFER_
|
|
|
|
|
2002-07-05 05:33:40 +00:00
|
|
|
// FILE_XFER objects encapsulate the transfer of a file to/from data servers.
|
|
|
|
// In particular it manages:
|
|
|
|
// - the choice of data servers
|
|
|
|
// TODO: try servers beyond the first one
|
|
|
|
// - the retry and give-up policies
|
|
|
|
// TODO: retry and eventually give up
|
|
|
|
// - restarting partial transfers
|
|
|
|
// - upload authentication
|
2002-04-30 22:22:54 +00:00
|
|
|
|
2002-06-01 20:26:21 +00:00
|
|
|
#include "client_types.h"
|
2002-04-30 22:22:54 +00:00
|
|
|
#include "http.h"
|
|
|
|
|
|
|
|
class FILE_XFER : public HTTP_OP {
|
|
|
|
public:
|
|
|
|
double start_time;
|
|
|
|
double end_time;
|
|
|
|
FILE_INFO* fip;
|
2002-07-05 05:33:40 +00:00
|
|
|
char pathname[256];
|
|
|
|
char header[4096];
|
|
|
|
int state;
|
2002-08-21 19:12:42 +00:00
|
|
|
bool file_size_query;
|
2002-04-30 22:22:54 +00:00
|
|
|
|
|
|
|
FILE_XFER();
|
|
|
|
~FILE_XFER();
|
|
|
|
|
2002-07-05 05:33:40 +00:00
|
|
|
//int init_download(char* url, char* outfile);
|
|
|
|
//int init_upload(char* url, char* infile);
|
2002-08-21 19:12:42 +00:00
|
|
|
int parse_server_response(double &offset);
|
2002-07-05 05:33:40 +00:00
|
|
|
int init_download(FILE_INFO&);
|
|
|
|
int init_upload(FILE_INFO&);
|
2002-04-30 22:22:54 +00:00
|
|
|
bool file_xfer_done;
|
|
|
|
int file_xfer_retval;
|
|
|
|
double elapsed_time();
|
|
|
|
};
|
|
|
|
|
|
|
|
class FILE_XFER_SET {
|
|
|
|
HTTP_OP_SET* http_ops;
|
|
|
|
public:
|
2002-08-12 22:26:32 +00:00
|
|
|
vector<FILE_XFER*> file_xfers;
|
2002-04-30 22:22:54 +00:00
|
|
|
FILE_XFER_SET(HTTP_OP_SET*);
|
|
|
|
int insert(FILE_XFER*);
|
|
|
|
int remove(FILE_XFER*);
|
|
|
|
bool poll();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|