summaryrefslogtreecommitdiff
path: root/include/remotetrans.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/remotetrans.h')
-rw-r--r--include/remotetrans.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/include/remotetrans.h b/include/remotetrans.h
new file mode 100644
index 0000000..d20d96b
--- /dev/null
+++ b/include/remotetrans.h
@@ -0,0 +1,84 @@
+/******************************************************************************
+ *
+ * remotetrans.h - code for Remote Transport
+ *
+ * $Id: remotetrans.h 2932 2013-07-31 14:07:01Z scribe $
+ *
+ * Copyright 2004-2013 CrossWire Bible Society (http://www.crosswire.org)
+ * CrossWire Bible Society
+ * P. O. Box 2528
+ * Tempe, AZ 85280-2528
+ *
+ * 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 version 2.
+ *
+ * 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. See the GNU
+ * General Public License for more details.
+ *
+ */
+
+#ifndef REMOTETRANS_H
+#define REMOTETRANS_H
+
+#include <vector>
+#include <defs.h>
+#include <swbuf.h>
+
+
+SWORD_NAMESPACE_START
+
+/** Class for reporting status
+*/
+class SWDLLEXPORT StatusReporter {
+public:
+ virtual ~StatusReporter() {};
+ /** Messages before stages of a batch download */
+ virtual void preStatus(long totalBytes, long completedBytes, const char *message);
+
+ /** frequently called throughout a download, to report status */
+ SWDEPRECATED virtual void statusUpdate(double dtTotal, double dlNow);
+ virtual void update(unsigned long totalBytes, unsigned long completedBytes);
+};
+
+
+/**
+* A base class to be used for reimplementation of network services.
+*/
+class SWDLLEXPORT RemoteTransport {
+
+protected:
+ StatusReporter *statusReporter;
+ bool passive;
+ bool term;
+ SWBuf host;
+ SWBuf u;
+ SWBuf p;
+
+public:
+ RemoteTransport(const char *host, StatusReporter *statusReporter = 0);
+ virtual ~RemoteTransport();
+
+ /***********
+ * override this method in your real impl
+ *
+ * if destBuf then write to buffer instead of file
+ */
+ virtual char getURL(const char *destPath, const char *sourceURL, SWBuf *destBuf = 0);
+
+
+ int copyDirectory(const char *urlPrefix, const char *dir, const char *dest, const char *suffix);
+
+ virtual std::vector<struct DirEntry> getDirList(const char *dirURL);
+ void setPassive(bool passive) { this->passive = passive; }
+ void setUser(const char *user) { u = user; }
+ void setPasswd(const char *passwd) { p = passwd; }
+ void terminate() { term = true; }
+};
+
+
+SWORD_NAMESPACE_END
+
+#endif