448
|
1 /*
|
|
2 * Copyright (c) 2000, Red Hat, Inc.
|
|
3 *
|
|
4 * This program is free software; you can redistribute it and/or modify
|
|
5 * it under the terms of the GNU General Public License as published by
|
|
6 * the Free Software Foundation; either version 2 of the License, or
|
|
7 * (at your option) any later version.
|
|
8 *
|
|
9 * A copy of the GNU General Public License can be found at
|
|
10 * http://www.gnu.org/
|
|
11 *
|
|
12 * Written by DJ Delorie <dj@cygnus.com>
|
|
13 *
|
|
14 */
|
|
15
|
|
16 /* This is the parent class for all the access methods known to setup
|
|
17 (i.e. ways to download files from the internet or other sources */
|
|
18
|
|
19 class NetIO {
|
|
20 protected:
|
|
21 NetIO (char *url);
|
|
22 void set_url (char *url);
|
|
23
|
|
24 public:
|
|
25 /* if nonzero, this is the estimated total file size */
|
|
26 int file_size;
|
|
27 /* broken down url FYI */
|
|
28 char *url;
|
|
29 char *proto;
|
|
30 char *host;
|
|
31 int port;
|
|
32 char *path;
|
|
33 virtual ~NetIO ();
|
|
34
|
|
35 /* The user calls this function to create a suitable accessor for
|
|
36 the given URL. It uses the network setup state in state.h. If
|
|
37 anything fails, either the return values is NULL or the returned
|
|
38 object is !ok() */
|
|
39 static NetIO * open (char *url);
|
|
40
|
|
41 /* If !ok() that means the transfer isn't happening. */
|
|
42 virtual int ok ();
|
|
43
|
|
44 /* Read `nbytes' bytes from the file. Returns zero when the file
|
|
45 is complete. */
|
|
46 virtual int read (char *buf, int nbytes);
|
|
47
|
|
48 /* Helper functions for http/ftp protocols. Both return nonzero for
|
|
49 "cancel", zero for "ok". They set net_proxy_user, etc, in
|
|
50 state.h */
|
|
51 int get_auth ();
|
|
52 int get_proxy_auth ();
|
|
53 };
|