Added file writing and then-callback to Downloader
[supertux.git] / src / addon / downloader.hpp
index 28f2313..5aab70d 100644 (file)
@@ -30,19 +30,31 @@ typedef int TransferId;
 class TransferStatus
 {
 public:
+  enum Status { RUNNING, COMPLETED, ABORT, ERROR };
+
+public:
   TransferId id;
+  Status status;
   int dltotal;
   int dlnow;
   int ultotal;
   int ulnow;
+  std::function<void ()> callback;
 
   TransferStatus(TransferId id_) :
     id(id_),
+    status(RUNNING),
     dltotal(0),
     dlnow(0),
     ultotal(0),
-    ulnow(0)
+    ulnow(0),
+    callback()
   {}
+
+  void then(const std::function<void ()>& callback_)
+  {
+    callback = callback_;
+  }
 };
 
 typedef std::shared_ptr<TransferStatus> TransferStatusPtr;
@@ -51,8 +63,6 @@ class Transfer;
 
 class Downloader
 {
-public:
-
 private:
   CURLM* m_multi_handle;
   std::vector<std::unique_ptr<Transfer> > m_transfers;