gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r7029 - GNUnet/src/applications/fs/fsui


From: gnunet
Subject: [GNUnet-SVN] r7029 - GNUnet/src/applications/fs/fsui
Date: Tue, 3 Jun 2008 01:50:54 -0600 (MDT)

Author: grothoff
Date: 2008-06-03 01:50:53 -0600 (Tue, 03 Jun 2008)
New Revision: 7029

Modified:
   GNUnet/src/applications/fs/fsui/fsui.h
   GNUnet/src/applications/fs/fsui/upload.c
Log:
final fix for SVN 1345

Modified: GNUnet/src/applications/fs/fsui/fsui.h
===================================================================
--- GNUnet/src/applications/fs/fsui/fsui.h      2008-06-03 06:47:32 UTC (rev 
7028)
+++ GNUnet/src/applications/fs/fsui/fsui.h      2008-06-03 07:50:53 UTC (rev 
7029)
@@ -453,6 +453,11 @@
    */
   GNUNET_FSUI_State state;
 
+  /**
+   * Is this a directory (or a file)?
+   */
+  int is_directory;
+
 } GNUNET_FSUI_UploadList;
 
 /**

Modified: GNUnet/src/applications/fs/fsui/upload.c
===================================================================
--- GNUnet/src/applications/fs/fsui/upload.c    2008-06-03 06:47:32 UTC (rev 
7028)
+++ GNUnet/src/applications/fs/fsui/upload.c    2008-06-03 07:50:53 UTC (rev 
7029)
@@ -652,6 +652,7 @@
   utc->state = GNUNET_FSUI_ACTIVE;
   if (GNUNET_YES == GNUNET_disk_file_test (shared->ctx->ectx, filename))
     {
+      utc->is_directory = GNUNET_NO;
       /* add this file */
       if (GNUNET_OK != GNUNET_disk_file_size (shared->ctx->ectx,
                                               filename, &utc->total,
@@ -667,6 +668,7 @@
     }
   else
     {
+      utc->is_directory = GNUNET_YES;
       if (GNUNET_SYSERR == shared->dsc (shared->dscClosure,
                                         filename, &addChildUpload, utc))
         {
@@ -822,7 +824,9 @@
 GNUNET_FSUI_upload_abort (struct GNUNET_FSUI_UploadList *ul)
 {
   GNUNET_FSUI_UploadList *c;
+  GNUNET_FSUI_UploadList *p;
   struct GNUNET_FSUI_Context *ctx;
+  GNUNET_FSUI_Event event;
 
   if (ul == NULL)
     return GNUNET_SYSERR;
@@ -839,6 +843,12 @@
           c = c->next;
         }
       GNUNET_thread_stop_sleep (ul->shared->handle);
+      event.type = GNUNET_FSUI_upload_aborted;
+      event.data.UploadAborted.uc.pos = ul;
+      event.data.UploadAborted.uc.cctx = ul->cctx;
+      event.data.UploadAborted.uc.ppos = ul->parent;
+      event.data.UploadAborted.uc.pcctx = ul->parent->cctx;
+      ctx->ecb (ctx->ecbClosure, &event);   
     }
   else
     {
@@ -848,8 +858,36 @@
         {
           GNUNET_FSUI_upload_abort (c);
           c = c->next;
-        }
+       }
+      event.type = GNUNET_FSUI_upload_aborted;
+      event.data.UploadAborted.uc.pos = ul;
+      event.data.UploadAborted.uc.cctx = ul->cctx;
+      event.data.UploadAborted.uc.ppos = ul->parent;
+      event.data.UploadAborted.uc.pcctx = ul->parent->cctx;
+      ctx->ecb (ctx->ecbClosure, &event);         
     }
+  if (! ul->is_directory)
+    {
+      /* reduce total size of all parents accordingly
+        and generate progress events */
+      p = ul->parent;
+      while (p != &ctx->activeUploads)
+       {
+         p->total -= ul->total;
+         event.type = GNUNET_FSUI_upload_progress;
+         event.data.UploadProgress.uc.pos = p;
+         event.data.UploadProgress.uc.cctx = p->cctx;
+         event.data.UploadProgress.uc.ppos = p->parent;
+         event.data.UploadProgress.uc.pcctx = p->parent->cctx;
+         event.data.UploadProgress.completed = p->completed;
+          event.data.UploadProgress.total = p->total;
+         /* use "now" for ETA, given that the user is aborting stuff */
+         event.data.UploadProgress.eta = GNUNET_get_time(); 
+         event.data.UploadProgress.filename = p->filename;
+         ctx->ecb (ctx->ecbClosure, &event);
+         p = p->parent;
+       }
+    }
   return GNUNET_OK;
 }
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]