]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Imroving way sorter is started in background
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 22 Jun 2025 13:35:41 +0000 (09:35 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 22 Jun 2025 13:35:41 +0000 (09:35 -0400)
Makefile.dbg
app/sorter.c
lib/uniprc.c

index a7a36124ccf7a4ae8de732029b8eb1ef8f5ab217..7a01fc022a498c5cc8bc2101f206e6b9b24b3a01 100644 (file)
@@ -80,9 +80,9 @@ onesortr:  debug
 #--------------------------------------------------------------------
 #procedure to start all needed components to have
 #a full complete test
-actions        :  clean debug newtest dosorter dorcvr
+actions        :  clean debug newtest dosortr dorcvr
 
-dosorter:  
+dosort:  
           @  echo "Starting Sorter"
           @                                            \
             bin/sorter                                 \
index 4938bc8610058b79ccb6745fd7992b637e431357..850b819afeac89fda6c59d4541fb17a503064466 100644 (file)
@@ -93,6 +93,65 @@ while (proceed==true) {
 */
 /********************************************************/
 /*                                                     */
+/*     sorter central task                             */
+/*                                                     */
+/********************************************************/
+static void sorting()
+
+{
+#define OPEP    "sorter.c:sorting,"
+#define TSLEEP  20
+
+int phase;
+_Bool proceed;
+
+phase=0;
+proceed=true;
+while (proceed==true) {
+  (void) rou_alert(0,"%s JMPDBG phase='%d'",OPEP,phase);
+  switch (phase) {
+    case 0      :       //Locking access
+      if (prc_locking(appname,true,5)==false) {
+        (void) rou_alert(0,"%s Unable to lock %s exclusif acccess (system?)",
+                            OPEP,appname);
+        proceed=false;
+        }
+      break;
+    case 1      :       //got signal
+      if ((hangup==true)||((reload==true))) {
+        (void) rou_alert(0,"%s got hangup or reload signal",OPEP);
+        phase=999;
+        }
+      break;
+    case 2      :       //got signal
+      (void) scantrans(EXTRANS,true);
+      break;
+    case 3      :       //got signal
+      (void) scantrans(EXTRANS,true);
+      break;
+    case 4      :       //one passe only?
+      if (foreground==true)
+        phase=999;      //Immediate ending
+      break;
+    case 5      :       //lets time pass
+      (void) sleep(TSLEEP);
+      phase=0;          //Looping
+      break;
+    default     :       //SAFE Guard
+      (void) prc_locking(appname,false,1);
+      proceed=false;
+      break;
+    }
+  phase++;
+  }
+
+#undef OPEP
+}
+/*
+\f
+*/
+/********************************************************/
+/*                                                     */
 /*     Main routine                                    */
 /*             Start a channel to a remote ip.port     */
 /*              read file and transmit contecnts to     */
@@ -103,8 +162,6 @@ int main(int argc,char *argv[])
 
 {
 #define OPEP    "sorter.c:main,"
-#define TSLEEP  5
-#define PREST   10
 
 int status;
 ARGTYP *params;
@@ -136,36 +193,11 @@ while (proceed==true) {
         if (prc_divedivedive()!=0)
           phase=999;    //direct exit
         }
-    case 3      :       //checking if we need to go background
-      if (prc_locking(appname,true,5)==false)
-        phase=999;      //Trouble trouble
-      break;
-    case PREST+1:       //restart phase
-      //NO BREAK, NO BREAK
-    case 4      :       //check about signal process
-      phase=4;          //reset phase
-      if (hangup==true) {
-        (void) rou_alert(0,"%s got hangup signal",OPEP);
-        phase=999;      //exiting loop
-        }
-      if (reload==true) {
-        (void) rou_alert(0,"%s got reload signal",OPEP);
-        phase=999;      //exiting loop
-        }
       break;
-    case 5      :       //Scanning all ".trans" file             
-      (void) scantrans(EXTRANS,true);
-      break;
-    case 6      :       //Scanning all ".done" file             
-      (void) scantrans(EXDONE,false);
-      break;
-    case 7      :       //one shot deal??
-      (void) sleep(TSLEEP);
-      if (foreground==false)
-        phase=PREST;       //restarting
+    case 3      :       //checking if we need to go background
+      (void) sorting();
       break;
     default     :       //end of task
-      (void) prc_locking(appname,false,1);
       params=par_freeparams(params);
       (void) rou_loadconfig(config,false);
       (void) sig_trapsignal(false,sig_alrm);
index af16a01689c197c358da15ba2fd0a22f48d71cb5..e7a30d30944ed995b80db3ed647e16589608c295 100644 (file)
@@ -208,6 +208,7 @@ fullname=(char *)0;
 phase=0;
 proceed=true;
 while (proceed==true) {
+  //(void) rou_alert(0,"%s pahse='%d'",OPEP,phase);
   switch (phase) {
     case 0     :       //setting lock filename
       if (lockname==(const char *)0) {