From 61e071882245ee6e934b83186a64587e0d590395 Mon Sep 17 00:00:00 2001
From: edgrif <edgrif>
Date: Fri, 12 Mar 2004 15:59:27 +0000
Subject: [PATCH] Add data passing to condvar request call. Make sure we always
 pass back error messages..

---
 src/zmapThreads/zmapSlave.c | 41 ++++++++++++++++++++++++++++++++-----
 1 file changed, 36 insertions(+), 5 deletions(-)

diff --git a/src/zmapThreads/zmapSlave.c b/src/zmapThreads/zmapSlave.c
index 87443aea1..b3665b7b8 100755
--- a/src/zmapThreads/zmapSlave.c
+++ b/src/zmapThreads/zmapSlave.c
@@ -26,9 +26,9 @@
  * Description: 
  * Exported functions: See XXXXXXXXXXXXX.h
  * HISTORY:
- * Last edited: Mar  1 19:52 2004 (edgrif)
+ * Last edited: Mar 11 15:56 2004 (edgrif)
  * Created: Thu Jul 24 14:37:26 2003 (edgrif)
- * CVS info:   $Id: zmapSlave.c,v 1.2 2004-03-03 12:07:35 edgrif Exp $
+ * CVS info:   $Id: zmapSlave.c,v 1.3 2004-03-12 15:59:27 edgrif Exp $
  *-------------------------------------------------------------------
  */
 
@@ -115,12 +115,16 @@ void *zmapNewThread(void *thread_args)
 
   while (1)
     {
+      gchar *sequence ;
+
       ZMAP_THR_DEBUG(("%x: about to do timed wait\n", connection->thread_id)) ;
 
       /* this will crap over performance...asking the time all the time !! */
       timeout.tv_sec = 5 ;				    /* n.b. interface seems to absolute time. */
       timeout.tv_nsec = 0 ;
-      signalled_state = zmapCondVarWaitTimed(thread_state, ZMAP_REQUEST_WAIT, &timeout, TRUE) ;
+      sequence = NULL ;
+      signalled_state = zmapCondVarWaitTimed(thread_state, ZMAP_REQUEST_WAIT, &timeout, TRUE,
+					     &sequence) ;
 
       ZMAP_THR_DEBUG(("%x: finished condvar wait, state = %s\n", connection->thread_id,
 		      zMapVarGetRequestString(signalled_state))) ;
@@ -134,16 +138,23 @@ void *zmapNewThread(void *thread_args)
 	  static int failure = 0 ;
 	  char *server_command ;
 
-	  ZMAP_THR_DEBUG(("%x: getting data....\n", connection->thread_id)) ;
+	  /* Is it an error to not have a sequence ????? */
+	  if (!sequence)
+	    sequence = "" ;
+
+	  ZMAP_THR_DEBUG(("%x: getting sequence %s....\n", connection->thread_id, sequence)) ;
 
 	  g_string_sprintf(thread_cb->server_request,
-			   "gif seqget %s ; seqfeatures", connection->sequence) ;
+			   "gif seqget %s ; seqfeatures", sequence) ;
 
 	  if (!zMapServerRequest(thread_cb->server, thread_cb->server_request->str,
 				 &(thread_cb->server_reply)))
 	    {
 	      thread_cb->thread_died = TRUE ;
 
+	      thread_cb->initial_error = g_strdup_printf("%s - %s", ZMAPSLAVE_CONNREQUEST,
+							 zMapServerLastErrorMsg(thread_cb->server)) ;
+
 	      /* NOTE IMPLICIT TERMINATION OF THREAD BY JUMPING OUT OF THIS LOOP
 	       * WHICH LEADS TO EXITTING FROM THIS ROUTINE. FOR OTHER ERRORS WE WIL
 	       * HAVE TO HAVE A MORE FORMAL MECHANISM.... */
@@ -159,6 +170,18 @@ void *zmapNewThread(void *thread_args)
 
 	  thread_cb->server_reply = NULL ;		    /* Reset, we don't free this string. */
 	}
+
+#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
+      else
+	{
+	  /* unknown state......... */
+	  thread_cb->thread_died = TRUE ;
+	  thread_cb->initial_error = g_strdup_printf("Thread received unknown state from GUI: %s",
+						     zMapVarGetRequestString(signalled_state)) ;
+	  goto clean_up ;
+	}
+#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
+
     }
 
 
@@ -230,11 +253,19 @@ static void cleanUpThread(void *thread_args)
   g_free(thread_cb) ;
 
 
+  printf("%x: error msg before condvar set: %s\n", connection->thread_id, error_msg) ;
+  fflush(stdout) ;
+
   if (!error_msg)
     zmapVarSetValue(&(connection->reply), reply) ;
   else
     zmapVarSetValueWithError(&(connection->reply), reply, error_msg) ;
 
+  printf("%x: error msg after condvar set: %s\n", connection->thread_id, error_msg) ;
+  fflush(stdout) ;
+
+
+
 
   ZMAP_THR_DEBUG(("%x: thread clean-up routine exitting because %s....\n",
 		  connection->thread_id,
-- 
GitLab