aboutsummaryrefslogtreecommitdiffstats
path: root/src/rttmissings.c
diff options
context:
space:
mode:
authorGuillaume Horel <guillaume.horel@serenitascapital.com>2015-11-04 13:55:26 -0500
committerGuillaume Horel <guillaume.horel@serenitascapital.com>2015-11-04 13:55:26 -0500
commitded46d4768498c7d27fedcc438fe80a59ad63d0c (patch)
tree1158247ec3b9580a3deaa320334c2d777050b6b9 /src/rttmissings.c
parenta5309fed914fdaa7697f2d369e7dcd02309063ab (diff)
downloadmrsync-ded46d4768498c7d27fedcc438fe80a59ad63d0c.tar.gz
move code into a src directory
Diffstat (limited to 'src/rttmissings.c')
-rw-r--r--src/rttmissings.c93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/rttmissings.c b/src/rttmissings.c
new file mode 100644
index 0000000..774e8b2
--- /dev/null
+++ b/src/rttmissings.c
@@ -0,0 +1,93 @@
+/*
+ Copyright (C) 2006 Renaissance Technologies Corp.
+ main developer: HP Wei <hp@rentec.com>
+ Copyright (C) 2005 Renaissance Technologies Corp.
+ Copyright (C) 2001 Renaissance Technologies Corp.
+ main developer: HP Wei <hp@rentec.com>
+
+ 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, or (at your option)
+ any later version.
+
+ 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include "rttmain.h"
+
+char * missingPages = NULL; /* array of flags */
+int nPages;
+
+int init_missingPages(int n)
+{
+ int i;
+
+ nPages = n;
+
+ /* init missingPages flags */
+ if (missingPages != NULL) free(missingPages); /* for second round */
+ missingPages = malloc(sizeof(char) * nPages);
+ for(i=0; i < nPages; ++i)
+ missingPages[i] = MISSING;
+
+ return 0;
+}
+
+int get_total_pages()
+{
+ return nPages;
+}
+
+int missing_pages()
+{
+ int result;
+ int i;
+
+ result = 0;
+
+ for(i=0; i < nPages; ++i)
+ if ((missingPages[i]) == MISSING) ++result;
+ return result;
+}
+
+int is_missing(int page)
+{
+ return (missingPages[page] == MISSING) ? 1 : 0;
+}
+
+void page_received(int page)
+{
+ missingPages[page] = RECEIVED;
+}
+
+int ask_for_missing_page()
+{
+ int i;
+ int n, count;
+
+ n = missing_pages();
+ if (n == 0) {
+ /* send_complaint(EOF_OK, machineID, 0); */
+ return 0; /* nothing is missing */
+ }
+
+ count = 0;
+ for(i=0; i < nPages; ++i) {
+ if ( missingPages[i] == MISSING ) {
+ ++count;
+ send_complaint((count==n) ? LAST_MISSING : MISSING_PAGE, i+1);
+ usleep(DT_PERPAGE);
+ }
+ }
+
+ return 1; /* there is something missing */
+}
+