gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r3526 - in GNUnet: . src/applications/fs/fsui


From: grothoff
Subject: [GNUnet-SVN] r3526 - in GNUnet: . src/applications/fs/fsui
Date: Sat, 21 Oct 2006 12:52:52 -0700 (PDT)

Author: grothoff
Date: 2006-10-21 12:52:48 -0700 (Sat, 21 Oct 2006)
New Revision: 3526

Modified:
   GNUnet/src/applications/fs/fsui/TODO
   GNUnet/src/applications/fs/fsui/download.c
   GNUnet/src/applications/fs/fsui/fsui.c
   GNUnet/src/applications/fs/fsui/search.c
   GNUnet/src/applications/fs/fsui/unindex.c
   GNUnet/src/applications/fs/fsui/upload.c
   GNUnet/todo
Log:
more FSUI stuff

Modified: GNUnet/src/applications/fs/fsui/TODO
===================================================================
--- GNUnet/src/applications/fs/fsui/TODO        2006-10-21 18:58:32 UTC (rev 
3525)
+++ GNUnet/src/applications/fs/fsui/TODO        2006-10-21 19:52:48 UTC (rev 
3526)
@@ -1,11 +1,3 @@
-upload.c:
-- use extractors to obtain metadata and keywords
-- better ETA calculations
 
-fsui.c:
-- event signaling: uninitalized fields
-- better ETA calculations for resumes
 
-download.c:
-- better ETA calculations
 

Modified: GNUnet/src/applications/fs/fsui/download.c
===================================================================
--- GNUnet/src/applications/fs/fsui/download.c  2006-10-21 18:58:32 UTC (rev 
3525)
+++ GNUnet/src/applications/fs/fsui/download.c  2006-10-21 19:52:48 UTC (rev 
3526)
@@ -23,9 +23,6 @@
  * @brief download functions
  * @author Krista Bennett
  * @author Christian Grothoff
- *
- * TODO:
- * - can do better ETA computation (in case of suspend-resume)
  */
 
 #include "platform.h"
@@ -134,23 +131,36 @@
   FSUI_DownloadList * dl = cls;
   FSUI_Event event;
   struct ECRS_MetaData * md;
+  cron_t now;
+  cron_t run_time;
 
   GE_ASSERT(dl->ctx->ectx,
            dl->total == totalBytes);
   dl->completed = completedBytes;
   event.type = FSUI_download_progress;
+  event.data.DownloadProgress.dc.pos = dl;
+  event.data.DownloadProgress.dc.cctx = dl->cctx;
+  event.data.DownloadProgress.dc.ppos = dl->parent;
+  event.data.DownloadProgress.dc.pcctx = dl->parent->cctx;
+  event.data.DownloadProgress.completed = dl->completed;
   event.data.DownloadProgress.total = dl->total;
-  event.data.DownloadProgress.completed = dl->completed;
   event.data.DownloadProgress.last_offset = lastBlockOffset;
-  event.data.DownloadProgress.eta = eta; /* FIXME: we can do better in FSUI! */
+  now = get_time();
+  run_time = now - dl->startTime;
+  if ( (dl->total == 0) || (dl->completed == 0) ) {
+    eta = now;
+  } else {
+    eta = (cron_t) (dl->startTime +
+                   (((double)(run_time)/(double)dl->completed))
+                   * (double)dl->total);
+    if (eta < now)
+      eta = now;
+  }
+  event.data.DownloadProgress.eta = eta; 
+  event.data.DownloadProgress.filename = dl->filename;
+  event.data.DownloadProgress.uri = dl->uri;
   event.data.DownloadProgress.last_block = lastBlock;
   event.data.DownloadProgress.last_size = lastBlockSize;
-  event.data.DownloadProgress.filename = dl->filename;
-  event.data.DownloadProgress.uri = dl->uri;
-  event.data.DownloadProgress.dc.pos = dl;
-  event.data.DownloadProgress.dc.cctx = dl->cctx;
-  event.data.DownloadProgress.dc.ppos = dl->parent;
-  event.data.DownloadProgress.dc.pcctx = dl->parent->cctx;
   dl->ctx->ecb(dl->ctx->ecbClosure,
               &event);
   if ( (lastBlockOffset == 0) &&
@@ -223,24 +233,24 @@
   if (ret == OK) {
     dl->state = FSUI_COMPLETED;
     event.type = FSUI_download_completed;
-    event.data.DownloadCompleted.total = dl->total;
-    event.data.DownloadCompleted.filename = dl->filename;
-    event.data.DownloadCompleted.uri = dl->uri;
     event.data.DownloadCompleted.dc.pos = dl;
     event.data.DownloadCompleted.dc.cctx = dl->cctx;
     event.data.DownloadCompleted.dc.ppos = dl->parent;
     event.data.DownloadCompleted.dc.pcctx = dl->parent->cctx;
+    event.data.DownloadCompleted.total = dl->total;
+    event.data.DownloadCompleted.filename = dl->filename;
+    event.data.DownloadCompleted.uri = dl->uri;
     dl->ctx->ecb(dl->ctx->ecbClosure,
                 &event);    
   } else if (dl->state == FSUI_ACTIVE) {
     /* ECRS error */
     dl->state = FSUI_ERROR;
     event.type = FSUI_download_error;
-    event.data.DownloadError.message = _("ECRS download failed (see logs)");
     event.data.DownloadError.dc.pos = dl;
     event.data.DownloadError.dc.cctx = dl->cctx;
     event.data.DownloadError.dc.ppos = dl->parent;
     event.data.DownloadError.dc.pcctx = dl->parent->cctx;
+    event.data.DownloadError.message = _("ECRS download failed (see logs)");
     dl->ctx->ecb(dl->ctx->ecbClosure,
                 &event);
   } else if (dl->state == FSUI_ABORTED) { /* aborted */
@@ -361,14 +371,14 @@
   dl->cctx = NULL;
   /* signal start! */
   event.type = FSUI_download_started;
-  event.data.DownloadStarted.filename = dl->filename;
-  event.data.DownloadStarted.total = ECRS_fileSize(dl->uri);
-  event.data.DownloadStarted.uri = dl->uri;
-  event.data.DownloadStarted.anonymityLevel = dl->anonymityLevel;
   event.data.DownloadStarted.dc.pos = dl;
   event.data.DownloadStarted.dc.cctx = NULL;
   event.data.DownloadStarted.dc.ppos = dl->parent;
   event.data.DownloadStarted.dc.pcctx = dl->parent->cctx; 
+  event.data.DownloadStarted.total = ECRS_fileSize(dl->uri);
+  event.data.DownloadStarted.filename = dl->filename;
+  event.data.DownloadStarted.uri = dl->uri;
+  event.data.DownloadStarted.anonymityLevel = dl->anonymityLevel;
   dl->cctx = dl->ctx->ecb(dl->ctx->ecbClosure,
                          &event);
   dl->next = parent->child;

Modified: GNUnet/src/applications/fs/fsui/fsui.c
===================================================================
--- GNUnet/src/applications/fs/fsui/fsui.c      2006-10-21 18:58:32 UTC (rev 
3525)
+++ GNUnet/src/applications/fs/fsui/fsui.c      2006-10-21 19:52:48 UTC (rev 
3526)
@@ -22,10 +22,6 @@
  * @file applications/fs/fsui/fsui.c
  * @brief main FSUI functions
  * @author Christian Grothoff
- *
- * TODO:
- * - resume signaling: some minor fields uninitialized
- * - better ETA calculation for download resume
  */
 
 #include "platform.h"
@@ -66,6 +62,8 @@
 static void signalDownloadResume(struct FSUI_DownloadList * ret,
                                 FSUI_Context * ctx) {
   FSUI_Event event;
+  cron_t now;
+  cron_t eta;
 
   while (ret != NULL) {
     if (ret->state == FSUI_PENDING) {
@@ -74,11 +72,22 @@
       event.data.DownloadResumed.dc.cctx = ret->cctx;
       event.data.DownloadResumed.dc.ppos = ret->parent;
       event.data.DownloadResumed.dc.pcctx = ret->parent->cctx;
-      event.data.DownloadResumed.eta = get_time(); /* FIXME: can do better 
here! */
+      event.data.DownloadResumed.completed = ret->completed;
       event.data.DownloadResumed.total = ret->total;
-      event.data.DownloadResumed.completed = ret->completed;
+      now = get_time();
+      if ( (ret->total == 0) || (ret->completed == 0) ) {
+       eta = now;
+      } else {
+       eta = (cron_t) (now - ret->runTime +
+                       (((double)(ret->run_time)/(double)ret->completed))
+                       * (double)ret->total);
+       if (eta < now)
+         eta = now;
+      }
+      event.data.DownloadResumed.eta = eta;
+      event.data.DownloadResumed.filename = ret->filename;
+      event.data.DownloadResumed.uri = ret->uri;
       event.data.DownloadResumed.anonymityLevel = ret->anonymityLevel;
-      event.data.DownloadResumed.uri = ret->uri;
       ret->cctx = ctx->ecb(ctx->ecbClosure, &event);
       if (ret->child != NULL)
        signalDownloadResume(ret->child,
@@ -91,6 +100,8 @@
 static void signalUploadResume(struct FSUI_UploadList * ret,
                               FSUI_Context * ctx) {
   FSUI_Event event;
+  cron_t now;
+  cron_t eta;
  
   while (ret != NULL) {
     if (ret->state == FSUI_ACTIVE) {
@@ -101,8 +112,18 @@
       event.data.UploadResumed.uc.pcctx = ret->parent->cctx;
       event.data.UploadResumed.completed = ret->completed;
       event.data.UploadResumed.total = ret->total;
+      now = get_time();
+      if ( (ret->total == 0) || (ret->completed == 0) ) {
+       eta = now;
+      } else {
+       eta = (cron_t) (ret->start_time +
+                       (((double)(now - 
ret->start_time)/(double)ret->completed))
+                       * (double)ret->total);
+       if (eta < now)
+         eta = now;
+      }
+      event.data.UploadResumed.eta = eta;
       event.data.UploadResumed.anonymityLevel = ret->shared->anonymityLevel;
-      event.data.UploadResumed.eta = 0; /* FIXME: use start_time for estimate! 
*/
       event.data.UploadResumed.filename = ret->filename;
       ret->cctx = ctx->ecb(ctx->ecbClosure, &event);
       if (ret->child != NULL)
@@ -502,6 +523,7 @@
     event.type = FSUI_unindex_suspended;
     event.data.UnindexSuspended.uc.pos = xpos;
     event.data.UnindexSuspended.uc.cctx = xpos->cctx;
+    ctx->ecb(ctx->ecbClosure, &event);
     xpos = xpos->next;    
   }
 

Modified: GNUnet/src/applications/fs/fsui/search.c
===================================================================
--- GNUnet/src/applications/fs/fsui/search.c    2006-10-21 18:58:32 UTC (rev 
3525)
+++ GNUnet/src/applications/fs/fsui/search.c    2006-10-21 19:52:48 UTC (rev 
3526)
@@ -55,10 +55,10 @@
     = ECRS_dupMetaData(fi->meta);
 
   event.type = FSUI_search_result;
+  event.data.SearchResult.sc.pos = pos;
+  event.data.SearchResult.sc.cctx = pos->cctx;
   event.data.SearchResult.fi = *fi;
   event.data.SearchResult.searchURI = pos->uri;
-  event.data.SearchResult.sc.pos = pos;
-  event.data.SearchResult.sc.cctx = pos->cctx;
   pos->ctx->ecb(pos->ctx->ecbClosure,
                &event);
 }
@@ -245,6 +245,8 @@
   event.type = FSUI_search_started;
   event.data.SearchStarted.sc.pos = pos;
   event.data.SearchStarted.sc.cctx = NULL;
+  event.data.SearchStarted.searchURI = pos->uri;
+  event.data.SearchStarted.anonymityLevel = pos->anonymityLevel;
   pos->cctx = pos->ctx->ecb(pos->ctx->ecbClosure,
                            &event);
   ret = ECRS_search(pos->ctx->ectx,

Modified: GNUnet/src/applications/fs/fsui/unindex.c
===================================================================
--- GNUnet/src/applications/fs/fsui/unindex.c   2006-10-21 18:58:32 UTC (rev 
3525)
+++ GNUnet/src/applications/fs/fsui/unindex.c   2006-10-21 19:52:48 UTC (rev 
3526)
@@ -42,10 +42,12 @@
   FSUI_Event event;
 
   event.type = FSUI_unindex_progress;
+  event.data.UnindexProgress.uc.pos = utc;
+  event.data.UnindexProgress.uc.cctx = utc->cctx;
+  event.data.UnindexProgress.total = totalBytes;
   event.data.UnindexProgress.completed = completedBytes;
-  event.data.UnindexProgress.total = totalBytes;
+  event.data.UnindexProgress.eta = eta;
   event.data.UnindexProgress.filename = utc->filename;
-  event.data.UnindexProgress.eta = eta;
   utc->ctx->ecb(utc->ctx->ecbClosure,
                &event);
 }
@@ -77,6 +79,7 @@
   event.data.UnindexStarted.uc.pos = utc;
   event.data.UnindexStarted.uc.cctx = NULL;
   event.data.UnindexStarted.total = size;
+  event.data.UnindexStarted.filename = utc->filename;
   utc->cctx = utc->ctx->ecb(utc->ctx->ecbClosure,
                            &event); 
   ret = ECRS_unindexFile(utc->ctx->ectx,

Modified: GNUnet/src/applications/fs/fsui/upload.c
===================================================================
--- GNUnet/src/applications/fs/fsui/upload.c    2006-10-21 18:58:32 UTC (rev 
3525)
+++ GNUnet/src/applications/fs/fsui/upload.c    2006-10-21 19:52:48 UTC (rev 
3526)
@@ -43,9 +43,7 @@
                             void * ptr) {
   FSUI_UploadList * utc = ptr;
   FSUI_Event event;
-  cron_t now;
 
-  now = get_time();
   event.type = FSUI_upload_progress;
   event.data.UploadProgress.uc.pos = utc;
   event.data.UploadProgress.uc.cctx = utc->cctx;
@@ -53,8 +51,8 @@
   event.data.UploadProgress.uc.pcctx = utc->parent->cctx;
   event.data.UploadProgress.completed = completedBytes;
   event.data.UploadProgress.total = totalBytes;
-  event.data.UploadProgress.filename = utc->filename;
   event.data.UploadProgress.eta = eta;
+  event.data.UploadProgress.filename = utc->filename;
   utc->completed = completedBytes;
   utc->shared->ctx->ecb(utc->shared->ctx->ecbClosure,
                        &event);

Modified: GNUnet/todo
===================================================================
--- GNUnet/todo 2006-10-21 18:58:32 UTC (rev 3525)
+++ GNUnet/todo 2006-10-21 19:52:48 UTC (rev 3526)
@@ -12,17 +12,25 @@
 
 
 
-0.7.1 ['06] (aka "stabilization")
+0.7.1 [10'06] (aka "stabilization")
 - finish util refactoring: [RC]
   * Testcases not compiling or passing:
     + dht/tools
   * Missing functionality: 
-    + fs/fsui:
-      @ better ETA calculations
-      @ make sure new event fields are set for all events
+    + logger configuration
+    + factor startup code into common helper function
+      @ make sure all tools load configuration file
     + fs/fslib: error handing
     + fs/module: error handing
-    + logger configuration
+    + gnunet-setup: [RC]
+      @ gtk wizard
+      @ ncurses wizard
+      @ Scheme (scm) specification of entire configuration
+- fix critical known bugs (see Mantis for updates):
+  * file/socket leak (#955) - possibly fixed
+  * Windows installer, uninstall: Remove account [Nils, RC]
+  * disk quota violations (#1128) [CG, RC]
+  * high CPU usage (quota exceeded) #1123 [CG, RC]
 - More testcases: [RC]
   * advertising
   * ecrs_core
@@ -34,16 +42,9 @@
   * make dht tests work (and write more) 
   * fs/fsui: recursive uploads and downloads (incl. persistence)
   * fs/namespaces
-- gnunet-setup: [RC]
-  * gtk wizard
-  * ncurses wizard
-  * Scheme (scm) specification of entire configuration
-- fix known bugs (see Mantis for updates):
-  * file/socket leak (#955) - possibly fixed
-  * Windows installer, uninstall: Remove account [Nils, RC]
 
 
-0.7.2 ['06]:
+0.7.2 ['07]:
 - Transports:
   * SMTP/HTTP (using libcurl, libmicrohttpd, libesmtp)
 - Features:
@@ -59,14 +60,14 @@
     current directories!) [ CG ]
   * DHT: use additional optional fields (HELLOs) [ CG ]
 
-0.7.3 ['06] (aka "features"):
+0.7.3 ['07] (aka "features"):
 - #747 (sharing stats for gnunet-gtk)
 - insert meta-data under hash (md5? sha1? sha-512? GNUnet-URI?)
   as keyword (to allow getting meta-data from URI only)
 - Documentation:
   * LJ article
 
-0.7.4 ['06] (aka "advanced features"):
+0.7.4 ['07] (aka "advanced features"):
 - gnunet-chat [ RC ]
 - Insert/Index a "shared directory" automatically [Nils]
 - https://gnunet.org/drupal/?q=node/97





reply via email to

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