Initial revision
[chise/xemacs-chise.git.1] / netinstall / netio.h
diff --git a/netinstall/netio.h b/netinstall/netio.h
new file mode 100644 (file)
index 0000000..b0a91ca
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2000, Red Hat, Inc.
+ *
+ *     This program is free software; you can redistribute it and/or modify
+ *     it under the terms of the GNU General Public License as published by
+ *     the Free Software Foundation; either version 2 of the License, or
+ *     (at your option) any later version.
+ *
+ *     A copy of the GNU General Public License can be found at
+ *     http://www.gnu.org/
+ *
+ * Written by DJ Delorie <dj@cygnus.com>
+ *
+ */
+
+/* This is the parent class for all the access methods known to setup
+   (i.e. ways to download files from the internet or other sources */
+
+class NetIO {
+protected:
+  NetIO (char *url);
+  void set_url (char *url);
+
+public:
+  /* if nonzero, this is the estimated total file size */
+  int file_size;
+  /* broken down url FYI */
+  char *url;
+  char *proto;
+  char *host;
+  int port;
+  char *path;
+  virtual ~NetIO ();
+
+  /* The user calls this function to create a suitable accessor for
+     the given URL.  It uses the network setup state in state.h.  If
+     anything fails, either the return values is NULL or the returned
+     object is !ok() */
+  static NetIO * open (char *url);
+
+  /* If !ok() that means the transfer isn't happening. */
+  virtual int ok ();
+
+  /* Read `nbytes' bytes from the file.  Returns zero when the file
+     is complete. */
+  virtual int read (char *buf, int nbytes);
+
+  /* Helper functions for http/ftp protocols.  Both return nonzero for
+     "cancel", zero for "ok".  They set net_proxy_user, etc, in
+     state.h */
+  int get_auth ();
+  int get_proxy_auth ();
+};