commit-gnue
[Top][All Lists]
Advanced

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

gnue/geas/src collectiondata.c geas-server.c ge...


From: Treshna Enterprises
Subject: gnue/geas/src collectiondata.c geas-server.c ge...
Date: Sun, 10 Jun 2001 22:19:27 -0700

CVSROOT:        /cvs
Module name:    gnue
Changes by:     Treshna Enterprises <address@hidden>    01/06/10 22:19:26

Modified files:
        geas/src       : collectiondata.c geas-server.c geas-server.h 
                         geas-skeleton.c security.c 
        geas/src/objectcache: objectcache.c 

Log message:
        added profiling and speed testing code (will optimise soon)

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/geas/src/collectiondata.c.diff?cvsroot=OldCVS&tr1=1.23&tr2=1.24&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/geas/src/geas-server.c.diff?cvsroot=OldCVS&tr1=1.99&tr2=1.100&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/geas/src/geas-server.h.diff?cvsroot=OldCVS&tr1=1.46&tr2=1.47&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/geas/src/geas-skeleton.c.diff?cvsroot=OldCVS&tr1=1.62&tr2=1.63&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/geas/src/security.c.diff?cvsroot=OldCVS&tr1=1.14&tr2=1.15&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/geas/src/objectcache/objectcache.c.diff?cvsroot=OldCVS&tr1=1.50&tr2=1.51&r1=text&r2=text

Patches:
Index: gnue/geas/src/collectiondata.c
diff -u gnue/geas/src/collectiondata.c:1.23 gnue/geas/src/collectiondata.c:1.24
--- gnue/geas/src/collectiondata.c:1.23 Sat Jun  9 16:06:40 2001
+++ gnue/geas/src/collectiondata.c      Sun Jun 10 22:19:26 2001
@@ -19,7 +19,7 @@
    along with this program; if not, write to the Free Software Foundation,
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
    
-   $Id: collectiondata.c,v 1.23 2001/06/09 23:06:40 ntiffin Exp $
+   $Id: collectiondata.c,v 1.24 2001/06/11 05:19:26 treshna Exp $
 
 */
 
@@ -73,6 +73,8 @@
   ObjectData *ob;               /* object cache entry */
   unsigned long int len;
 
+  timer_start_operation( TIMER_LISTS , "Start query: find list of objects" );
+
   /* what class are we laoding into the list? */
   classname = (char *) oql_query_get_classname (query);
 
@@ -87,8 +89,10 @@
         {
           free_query_result (result);
         }
+      timer_fail_operation( TIMER_LISTS );
       return (NULL);
     }
+  timer_done_operation( TIMER_LISTS );
   if (!result)
     {
       self_test_message ("query failed");
@@ -97,6 +101,7 @@
   self_test_message ("query succeeded");
 
   /* place links into collection */
+  timer_start_operation( TIMER_LISTS , "place query results in list" );
   idx = oql_query_get_field_position (query, "objectid");
   if (idx == (-1))
     {
@@ -105,6 +110,7 @@
         {
           free_query_result (result);
         }
+      timer_fail_operation( TIMER_LISTS );
       return (NULL);
     }
 
@@ -112,6 +118,7 @@
   lst = GEAS_Connection_newObject (xid->server, "geas::listholder", ev);
   if (ev->_major != CORBA_NO_EXCEPTION)
     {
+      timer_fail_operation( TIMER_LISTS );
       return (NULL);
     }
 
@@ -122,6 +129,7 @@
   if (ev->_major != CORBA_NO_EXCEPTION)
     {
       printf ("E %s\n", CORBA_exception_id (ev));
+      timer_fail_operation( TIMER_LISTS );
       return (NULL);
     }
 
@@ -155,6 +163,7 @@
 
   /* done, successfully */
   free_query_result (result);
+  timer_done_operation( TIMER_LISTS );
 
   return (listid);
 }
@@ -166,4 +175,4 @@
   /* TODO */
   printf ("\nSelf test object container is not implemented.\n");
 }
-#endif
\ No newline at end of file
+#endif
Index: gnue/geas/src/geas-server.c
diff -u gnue/geas/src/geas-server.c:1.99 gnue/geas/src/geas-server.c:1.100
--- gnue/geas/src/geas-server.c:1.99    Sat Jun  9 00:18:15 2001
+++ gnue/geas/src/geas-server.c Sun Jun 10 22:19:26 2001
@@ -19,7 +19,7 @@
   along with this program; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
   
-  $Id: geas-server.c,v 1.99 2001/06/09 07:18:15 baumannd Exp $
+  $Id: geas-server.c,v 1.100 2001/06/11 05:19:26 treshna Exp $
  
 */
 
@@ -33,6 +33,7 @@
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <sys/time.h>
 
 #ifdef USE_GNU_GETOPT
 #include <getopt.h>
@@ -150,6 +151,165 @@
 
 #endif
 
+#ifdef TIMER_TESTING
+static unsigned long int timercount = 0;
+static int active_timer_sections[ TIMER_SECTIONS ];
+
+#define TIMER_us 10000
+#define TIMER_IN_SECONDS(x) ((float) (TIMER_us*(x))/1000000.0 )
+
+void timer_handler( int arg );
+void timer_handler( int arg )
+{
+    timercount += 1;
+}
+
+struct timer_profile
+{
+    unsigned long max,min,total,count,timercount;
+    float avg;
+};
+struct timer_profile timer_profiles[ TIMER_FUNC_COUNT ];
+
+void timer_start_profile( int function )
+{
+    timer_profiles[function].timercount = timercount;
+}
+
+void timer_update_profile( int function )
+{
+  unsigned long diff;
+  diff = timercount - timer_profiles[function].timercount;
+
+  if( timer_profiles[function].count == 0 )
+  {
+    timer_profiles[function].max = diff;
+    timer_profiles[function].min = diff;
+    timer_profiles[function].count = 1;
+    timer_profiles[function].total = diff;
+    timer_profiles[function].avg = TIMER_IN_SECONDS(diff);
+  }
+  else
+  {
+    if( diff > timer_profiles[function].max )
+      timer_profiles[function].max = diff;
+
+    if( diff < timer_profiles[function].min )
+      timer_profiles[function].min = diff;
+
+    timer_profiles[function].count++;
+    timer_profiles[function].total += diff;
+    timer_profiles[function].avg =
+      
TIMER_IN_SECONDS(timer_profiles[function].total/timer_profiles[function].count);
+  }
+
+  #define TIMER_FUNC_GETFIELD   0
+  #define TIMER_FUNC_SETFIELD   1
+  #define TIMER_FUNC_NEWOBJECT  2
+  #define TIMER_FUNC_LOADALL    3
+
+
+  printf( "PROFILE: " );
+  switch( function )
+   {
+   case TIMER_FUNC_GETFIELD  : printf( "getField() : " ); break;
+   case TIMER_FUNC_SETFIELD  : printf( "setField() : " ); break;
+   case TIMER_FUNC_NEWOBJECT : printf( "newObject(): " ); break;
+   case TIMER_FUNC_LOADALL   : printf( "loadAll()  : " ); break;
+   }
+  printf( "min: %.3f avg: %.3f max: %.3f\n" ,
+         TIMER_IN_SECONDS( timer_profiles[function].min ),
+                           timer_profiles[function].avg,
+         TIMER_IN_SECONDS( timer_profiles[function].max ) );
+}
+
+struct timeable
+{
+    char name[128];
+    unsigned long int timeval;
+};
+
+/* statically allocated structure, to avoid memory allocation
+   during timing operations */
+#define MAX_TIMEABLE_COUNT 256
+struct timeable timeablestack[ MAX_TIMEABLE_COUNT ];
+static signed int timer_operation_count = (-1);
+
+#define TIMER_INDENT "   "
+
+void timer_start_operation( int section , char *fmt , ... )
+{
+  int i;
+  va_list ap;
+
+  /* reset to 0 when no events are being timed */
+  /* prevents overflows for long runs, unless an */
+  /* operation takes a very long time */
+  if( timer_operation_count == (-1) ) {
+      if( active_timer_sections[section] == 1 )
+          printf( "\n" );
+      timercount = 0;
+  }
+
+  /* increment stack poitner */
+  timer_operation_count++;
+
+  /* die if too many nested operations */
+  g_assert( timer_operation_count < MAX_TIMEABLE_COUNT );
+
+  /* record data on stack */
+  va_start (ap, fmt);
+  vsnprintf (timeablestack[timer_operation_count].name,128, fmt, ap);
+  va_end (ap);
+
+  timeablestack[timer_operation_count].timeval = timercount;
+
+  /* display start event */
+  if( active_timer_sections[section] == 1 ) {
+    for( i=0 ; i<timer_operation_count ; i++ )
+      printf( TIMER_INDENT );
+    printf( "TIMER: START: %s (%.3f elapsed)\n" , 
timeablestack[timer_operation_count].name , TIMER_IN_SECONDS(timercount) );
+  }
+}
+
+void timer_done_operation( int section )
+{
+  unsigned long int diff;
+  int i;
+  g_assert( timer_operation_count >= 0 );
+
+  if( active_timer_sections[section] == 1 ) {
+    diff = timercount - timeablestack[timer_operation_count].timeval;
+    for( i=0 ; i<timer_operation_count ; i++ )
+      printf( TIMER_INDENT );
+    printf( "TIMER: END  : %.3f (%.3f elapsed) %s\n" ,
+           TIMER_IN_SECONDS(diff) , TIMER_IN_SECONDS(timercount) ,
+           timeablestack[timer_operation_count].name );
+  }
+
+  timer_operation_count -= 1;
+}
+
+void timer_fail_operation( int section )
+{
+  unsigned long int diff;
+  int i;
+  g_assert( timer_operation_count >= 0 );
+
+  if( active_timer_sections[section] == 1 ) {
+    diff = timercount - timeablestack[timer_operation_count].timeval;
+    for( i=0 ; i<timer_operation_count ; i++ )
+      printf( TIMER_INDENT );
+    printf( "TIMER: FAIL : %.3f (%.3f elapsed) %s\n" ,
+           TIMER_IN_SECONDS(diff) , TIMER_IN_SECONDS(timercount) ,
+           timeablestack[timer_operation_count].name );
+  }
+
+  timer_operation_count -= 1;
+}
+
+#endif
+
 /* Public functions */
 
 /** \brief Main function
@@ -163,6 +323,9 @@
 #endif
   char *filename = NULL;
   FILE *fp = NULL;
+#ifdef TIMER_TESTING
+  struct itimerval timerdata;
+#endif
 
   PortableServer_POA root_poa;
   PortableServer_POAManager pm;
@@ -212,6 +375,57 @@
   }
 #endif
 
+  /* set up a timer for speed testing */
+#ifdef TIMER_TESTING
+  /* select active sections for timing info display */
+
+  /* clear all */
+  for( i=0 ; i<TIMER_SECTIONS ; i++ )
+    active_timer_sections[i] = 0;
+
+  for( i=0 ; i<TIMER_FUNC_COUNT ;i++ ) {
+    timer_profiles[i].max   = 0;
+    timer_profiles[i].min   = 0;
+    timer_profiles[i].total = 0;
+    timer_profiles[i].count = 0;
+    timer_profiles[i].avg   = 0.0;
+  }
+
+  active_timer_sections[ TIMER_MISC     ] = 1;
+  active_timer_sections[ TIMER_SKELETON ] = 1;
+  active_timer_sections[ TIMER_SKELMISC ] = 0;
+  active_timer_sections[ TIMER_CACHE    ] = 0;
+  active_timer_sections[ TIMER_LISTS    ] = 1;
+
+  /* time to wait between signals */
+  timercount = 0;
+  timerdata.it_interval.tv_usec = TIMER_us;
+  timerdata.it_interval.tv_sec  = 0;
+
+  /* set initial value */
+
+#define TIMER_REAL 1
+
+  timerdata.it_value.tv_usec    = timerdata.it_interval.tv_usec;
+  timerdata.it_value.tv_sec     = timerdata.it_interval.tv_sec;
+
+#ifdef TIMER_VIRTUAL
+  setitimer( ITIMER_VIRTUAL , &timerdata , NULL ); /* raise SIGVTALRM */
+  signal( SIGVTALRM , (sighandler_t)timer_handler );
+#endif
+#ifdef TIMER_PROF
+  setitimer( ITIMER_PROF , &timerdata , NULL ); /* raise SIGPROF */
+  signal( SIGPROF , (sighandler_t)timer_handler );
+#endif
+#ifdef TIMER_REAL
+  setitimer( ITIMER_REAL , &timerdata , NULL ); /* raise SIGALRM */
+  signal( SIGALRM , (sighandler_t)timer_handler );
+#endif
+
+#endif
+
+  timer_start_operation(TIMER_MISC,"Server initialisation");
+
   /* read command line arguments, including a config file */
   readOptions (argc, argv);
 
@@ -437,7 +651,8 @@
     }
 
   /* start server */
-  message ("Starting server");
+  timer_done_operation(TIMER_MISC);
+  message ("Starting server" );
 
   CORBA_ORB_run (the_orb, &ev);
 
Index: gnue/geas/src/geas-server.h
diff -u gnue/geas/src/geas-server.h:1.46 gnue/geas/src/geas-server.h:1.47
--- gnue/geas/src/geas-server.h:1.46    Sun Jun 10 05:56:12 2001
+++ gnue/geas/src/geas-server.h Sun Jun 10 22:19:26 2001
@@ -20,7 +20,7 @@
    along with this program; if not, write to the Free Software Foundation,
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
  
-   $Id: geas-server.h,v 1.46 2001/06/10 12:56:12 ntiffin Exp $
+   $Id: geas-server.h,v 1.47 2001/06/11 05:19:26 treshna Exp $
 */
 
 /** \file geas-server.h
@@ -33,6 +33,37 @@
 #define GEAS_SERVER_H
 
 #include "classdata.h"
+
+#ifdef TIMER_TESTING
+  #define TIMER_MISC       0 /* geas-server.c     */
+  #define TIMER_SKELETON   1 /* geas-skeleton.c   */
+  #define TIMER_SKELMISC   2 /* geas-skeleton.c   */
+  #define TIMER_CACHE      3 /* objectcache/      */
+  #define TIMER_LISTS      4 /* collectiondata.c  */
+  #define TIMER_SECTIONS  20 /* count of sections */
+
+  #define TIMER_FUNC_GETFIELD   0
+  #define TIMER_FUNC_SETFIELD   1
+  #define TIMER_FUNC_NEWOBJECT  2
+  #define TIMER_FUNC_LOADALL    3
+
+  #define TIMER_FUNC_COUNT     50
+
+
+  void timer_start_operation ( int section , char *name , ... );
+  void timer_done_operation  ( int section );
+  void timer_fail_operation  ( int section );
+  void timer_start_profile   ( int function );
+  void timer_update_profile  ( int function );
+
+#else
+  #define timer_start_operation (x,dummy,...) /* empty */
+  #define timer_done_operation  (dummy)       /* empty */
+  #define timer_fail_operation  (dummy)       /* empty */
+
+  #define timer_start_profile   (dummy)       /* empty */
+  #define timer_update_profile  (dummy)       /* empty */
+#endif
 
 /** \brief username reserved for the server */
 #define SERVER_PRIVATE_USERNAME "server_private_user"
Index: gnue/geas/src/geas-skeleton.c
diff -u gnue/geas/src/geas-skeleton.c:1.62 gnue/geas/src/geas-skeleton.c:1.63
--- gnue/geas/src/geas-skeleton.c:1.62  Sat Jun  9 16:06:40 2001
+++ gnue/geas/src/geas-skeleton.c       Sun Jun 10 22:19:26 2001
@@ -19,7 +19,7 @@
    along with this program; if not, write to the Free Software Foundation,
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
    
-   $Id: geas-skeleton.c,v 1.62 2001/06/09 23:06:40 ntiffin Exp $
+   $Id: geas-skeleton.c,v 1.63 2001/06/11 05:19:26 treshna Exp $
  
 */
 
@@ -103,63 +103,6 @@
   return;
 }
 
-#if 0
-static void
-some_old_code (GEAS_object_reference * id)
-{
-  QueryData *query = NULL;
-  ObjectData *user = NULL, *transaction = NULL;
-  char *transactionid = NULL;
-  char *open;
-
-  /* find user data by name */
-  query = NULL;
-  user = oc_search_for_single_object (query);
-  if (query)
-    oql_free_query (query);
-  if (!user)
-    return;
-
-  /* get transaction ID */
-  transactionid = oc_get_object_field (user, "_currenttransaction");
-  if (!transactionid || strlen (transactionid) == 0)
-    {
-      /* no transaction */
-      if (transactionid)
-        g_free (transactionid);
-      return;
-    }
-
-  /* record it */
-  id->currenttransaction = g_strdup (transactionid);
-  g_free (transactionid);
-  transactionid = NULL;
-
-  /* find associated transaction object */
-  query = NULL;
-  transaction = oc_search_for_single_object (query);
-  if (query)
-    oql_free_query (query);
-  if (!transaction)
-    return;
-
-  open = oc_get_object_field (transaction, "open");
-  if (!open || strlen (open) == 0)
-    {
-      if (open)
-        g_free (open);
-      return;
-    }
-
-  if (open[0] == 'T' || open[0] == 't')
-    {
-      /* it's open */
-      id->transactionopen = TRUE;
-    }
-  g_free (open);
-}
-#endif
-
 /** \brief get all identifiers for the current object
  * When an operation is performed on an object, this function is called to
  * extract the ID from the object reference.
@@ -180,9 +123,11 @@
   GEAS_object_reference *retval = NULL;
 
   /* convert it to an ID */
+  timer_start_operation(TIMER_SKELMISC,"get_current_object_reference");
   id = PortableServer_POA_servant_to_id (poa, servant, ev);
   if (ev->_major != CORBA_NO_EXCEPTION)
     {
+      timer_fail_operation( TIMER_SKELETON );
       return (NULL);
     }
 
@@ -191,10 +136,12 @@
     {
       if (id)
         CORBA_free (id);
+      timer_fail_operation( TIMER_SKELMISC );
       return (NULL);
     }
   if (!retval)
     {
+      timer_fail_operation( TIMER_SKELMISC );
       return (NULL);
     }
 
@@ -223,6 +170,7 @@
     CORBA_free (id);
 
   /* return new ID data */
+  timer_done_operation( TIMER_SKELMISC );
   return (retval);
 }
 
@@ -242,12 +190,17 @@
   GEAS_ObjectReference retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
+  timer_start_operation(TIMER_SKELETON,"Query::Query::_get_id");
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
   retval = Query__get_id (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -258,16 +211,20 @@
   GEAS_Query_logictype retval = 0;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Constraint__get_logic (id, ev);
 
   free_geas_object_reference (id);
 
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -278,15 +235,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Constraint__set_logic (id, value, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -296,15 +257,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Constraint_addField (id, field, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -320,15 +285,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Query_release (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -337,15 +306,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Query_clear (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static GEAS_Query_Constraint
@@ -355,15 +328,19 @@
   GEAS_Query_Constraint retval;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (CORBA_OBJECT_NIL);
+  }
 
   retval = Constraint_newConstraint (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return (retval);
 }
 
@@ -374,15 +351,19 @@
   GEAS_Query_Constraint retval;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (CORBA_OBJECT_NIL);
+  }
 
   retval = Constraint_newConstraint (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return (retval);
 }
 
@@ -393,16 +374,20 @@
   CORBA_char *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Query__get_orderby (id, ev);
 
   free_geas_object_reference (id);
 
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -413,15 +398,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Query__set_orderby (id, value, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static CORBA_boolean
@@ -431,16 +420,20 @@
   CORBA_boolean retval = CORBA_FALSE;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Query__get_reverse (id, ev);
 
   free_geas_object_reference (id);
 
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -451,15 +444,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Query__set_reverse (id, value, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static GEAS_Query_logictype
@@ -469,15 +466,19 @@
   GEAS_Query_logictype retval = GEAS_Query_UNKNOWN;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Constraint__get_logic (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return (retval);
 }
 
@@ -488,15 +489,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Constraint__set_logic (id, value, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static CORBA_char *
@@ -506,15 +511,19 @@
   CORBA_char *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Query__get_classname (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return (retval);
 }
 
@@ -525,15 +534,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Query__set_classname (id, value, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -543,15 +556,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Constraint_addField (id, field, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 /* XYZ ------------------------------- */
@@ -563,16 +580,20 @@
   CORBA_long retval = 0;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Admin__get_debuglevel (id, ev);
 
   free_geas_object_reference (id);
 
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -582,16 +603,19 @@
 {
   GEAS_object_reference *id = NULL;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Admin__set_debuglevel (id, value, ev);
 
   free_geas_object_reference (id);
-
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static CORBA_boolean
@@ -601,15 +625,19 @@
   CORBA_boolean retval = FALSE;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Admin__get_verbose (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return (retval);
 }
 
@@ -619,13 +647,17 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -634,15 +666,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Admin_restart (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -651,15 +687,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Admin_shutdown (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static CORBA_unsigned_long
@@ -669,13 +709,18 @@
 {
   CORBA_unsigned_long retval = 0;
   GEAS_object_reference *id;
+
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection_countAllInstances (id, classname, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return (retval);
 }
 
@@ -686,15 +731,19 @@
   CORBA_char *retval = NULL;    /* default value */
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection__get_currentUserID (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return (retval);
 }
 
@@ -705,15 +754,19 @@
   GEAS_classnames *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection__get_classes (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -724,15 +777,19 @@
   GEAS_classlist *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection__get_schema (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -743,15 +800,19 @@
   GEAS_Query_Query retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection_newQuery (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -763,17 +824,21 @@
   GEAS_ObjectList retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   allow_oid_refill = FALSE;
   retval = Connection_executeQuery (id, querytoperform, ev);
   allow_oid_refill = TRUE;
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -785,15 +850,19 @@
   GEAS_ClassDefinition *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection_getClassDefinition (id, name, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -805,15 +874,19 @@
   GEAS_ClassDefinition *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection_getFullClassDefinition (id, name, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -826,15 +899,19 @@
   GEAS_LookupOptions *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection_getLookupFieldOptions (id, classname, fieldname, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -846,15 +923,19 @@
   CORBA_boolean retval = CORBA_FALSE;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection_supportsFeature (id, featureID, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -870,13 +951,16 @@
   GEAS_object_reference *id = NULL;
   ObjectData *ob;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
   if (allow_oid_refill)
     refill_oid_buffer (5);
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   ob = oc_find_object_by_key (id->classname, id->objectid);
   if (ob)
@@ -886,6 +970,7 @@
     }
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -897,15 +982,19 @@
   GEAS_DataObject retval = CORBA_OBJECT_NIL;
   GEAS_object_reference *id = NULL;
 
+  timer_start_operation(TIMER_SKELETON,"newObject(%s)",classname);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection_newObject (id, classname, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -917,15 +1006,19 @@
   GEAS_DataObject retval = CORBA_OBJECT_NIL;
   GEAS_object_reference *id = NULL;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection_newEmptyList (id, classname, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -940,17 +1033,21 @@
   GEAS_ObjectList retval = CORBA_OBJECT_NIL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   allow_oid_refill = FALSE;
   retval = Connection_loadObjects (id, classname, fieldname, searchvalue, ev);
   allow_oid_refill = TRUE;
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -961,18 +1058,24 @@
   GEAS_ObjectList retval = CORBA_OBJECT_NIL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,"loadAll(%s)",classname);
+  timer_start_profile( TIMER_FUNC_LOADALL );
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
 
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   allow_oid_refill = FALSE;
   retval = Connection_loadAll (id, classname, ev);
   allow_oid_refill = TRUE;
 
   free_geas_object_reference (id);
+  timer_update_profile( TIMER_FUNC_LOADALL );
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -986,16 +1089,20 @@
   GEAS_DataObject retval = CORBA_OBJECT_NIL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval =
     Connection_loadSingleObject (id, classname, fieldname, searchvalue, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1009,15 +1116,19 @@
   GEAS_Transaction retval = CORBA_OBJECT_NIL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = TransactionFactory_new (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1029,15 +1140,19 @@
   GEAS_Transaction retval = CORBA_OBJECT_NIL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = TransactionFactory_current (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1059,15 +1174,19 @@
   GEAS_Transaction retval = CORBA_OBJECT_NIL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = TransactionFactory_new (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1079,15 +1198,19 @@
   GEAS_Transaction retval = CORBA_OBJECT_NIL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = TransactionFactory_current (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1108,13 +1231,18 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   Transaction_begin (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 /* raises: TransactionNotInProgress */
@@ -1124,13 +1252,18 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   Transaction_commit (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 /* raises: TransactionNotInProgress */
@@ -1140,13 +1273,18 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   Transaction_abort (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 /* raises: TransactionNotInProgress */
@@ -1156,13 +1294,18 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   Transaction_checkpoint (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 /* raises: TransactionNotInProgress */
@@ -1172,13 +1315,18 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   Transaction_join (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 /* raises: TransactionNotInProgress */
@@ -1188,13 +1336,18 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   Transaction_leave (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 /* raises: */
@@ -1205,13 +1358,18 @@
   CORBA_boolean retval = CORBA_FALSE;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
+
   retval = Transaction_isOpen (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1223,16 +1381,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   if (allow_oid_refill)
     refill_oid_buffer (5);
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
-
+  }
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -1241,15 +1402,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   Connection_logout (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static GEAS_LoadDefinition *
@@ -1261,15 +1426,19 @@
   GEAS_object_reference *id;
   GEAS_LoadDefinition *retval = NULL;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = Connection_getReferenceDefinition (id, classname, fieldname, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return (retval);
 }
 
@@ -1278,14 +1447,20 @@
                                  CORBA_Environment * ev)
 {
   GEAS_object_reference *id;
+
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   Connection_clearCache (id, ev);
   free_geas_object_reference (id);
   if (allow_oid_refill)
     refill_oid_buffer (1024 * 1024);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -1293,12 +1468,18 @@
                                        CORBA_Environment * ev)
 {
   GEAS_object_reference *id;
+
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   Connection_activateEventLog (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static GEAS_Changes *
@@ -1307,12 +1488,18 @@
 {
   GEAS_object_reference *id = NULL;
   GEAS_Changes *retval = NULL;
+
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
+
   retval = Connection__get_latestChanges (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return (retval);
 }
 
@@ -1323,13 +1510,19 @@
 {
   CORBA_boolean retval = CORBA_FALSE;
   GEAS_object_reference *id;
+
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
+
   if (g_strcasecmp (classname, id->classname) == 0 &&
       strcmp (id->objectid, oid) == 0)
     retval = CORBA_TRUE;
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1341,15 +1534,19 @@
   GEAS_ObjectReference retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject__get_objectID (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1360,15 +1557,19 @@
   CORBA_boolean retval = FALSE;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject_ofclass (id, classname, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1379,15 +1580,19 @@
   CORBA_char *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject__get_classname (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1398,15 +1603,19 @@
   GEAS_classnames *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject__get_classes (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1417,15 +1626,19 @@
   GEAS_fieldlist *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject__get_allfields (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1437,15 +1650,19 @@
   GEAS_LookupOptions *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject_getLookupFieldOptions (id, fieldname, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1456,15 +1673,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   DataObject_setLookupField (id, setting, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static CORBA_char *
@@ -1480,12 +1701,20 @@
     refill_oid_buffer (5);
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+
+  
timer_start_operation(TIMER_SKELETON,"%s.getField(%s)",id->classname,fieldname);
+  timer_start_profile( TIMER_FUNC_GETFIELD );
+
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject_getField (id, fieldname, ev);
 
   free_geas_object_reference (id);
+  timer_update_profile( TIMER_FUNC_GETFIELD );
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1496,10 +1725,14 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,"setField(%s,%s)",fieldname,value);
   trace_functioncall ();
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   if (allow_oid_refill)
     refill_oid_buffer (5);
 
@@ -1508,6 +1741,7 @@
   free_geas_object_reference (id);
 
   trace_functiondone ();
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static GEAS_DataObject
@@ -1518,14 +1752,18 @@
   GEAS_DataObject retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject_getReference (id, fieldname, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1536,17 +1774,21 @@
   GEAS_ObjectList retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   allow_oid_refill = FALSE;
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject_getList (id, fieldname, ev);
 
   free_geas_object_reference (id);
   allow_oid_refill = TRUE;
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1557,14 +1799,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   DataObject_insert (id, fieldname, obj, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -1575,14 +1822,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   DataObject_setReference (id, fieldname, obj, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -1591,16 +1843,20 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   if (allow_oid_refill)
     refill_oid_buffer (5);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -1609,11 +1865,14 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   DataObject_delete (id, ev);
 
@@ -1621,6 +1880,7 @@
     refill_oid_buffer (5);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static CORBA_char *
@@ -1632,18 +1892,22 @@
   CORBA_char *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   if (allow_oid_refill)
     refill_oid_buffer (5);
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = DataObject_callMethod (id, methodname, args, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1654,17 +1918,21 @@
   CORBA_unsigned_long retval = 0;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   if (allow_oid_refill)
     refill_oid_buffer (1);
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = ObjectList__get_length (id, ev);
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1675,18 +1943,22 @@
   GEAS_objectslist *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   if (allow_oid_refill)
     refill_oid_buffer (5);
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = ObjectList__get_objects (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1697,15 +1969,19 @@
   CORBA_char *retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = ObjectList__get_classname (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1717,18 +1993,22 @@
   GEAS_DataObject retval = NULL;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   if (allow_oid_refill)
     refill_oid_buffer (2);
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = ObjectList_getEntry (id, index, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1739,15 +2019,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   ObjectList_appendObject (id, obj, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -1757,15 +2041,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   ObjectList_removeEntry (id, index, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -1775,15 +2063,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   ObjectList_resort (id, fieldname, ascending, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static CORBA_unsigned_long
@@ -1795,15 +2087,19 @@
   CORBA_unsigned_long retval = 0;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = ObjectList_hideObjects (id, fieldname, compare, value, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1816,15 +2112,19 @@
   CORBA_unsigned_long retval = 0;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = ObjectList_showObjects (id, fieldname, compare, value, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1834,13 +2134,17 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static CORBA_unsigned_long
@@ -1850,15 +2154,19 @@
   CORBA_unsigned_long retval = 0;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = ObjectList_applyFilter (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1869,15 +2177,19 @@
   CORBA_boolean retval = FALSE;
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return (retval);
+  }
 
   retval = ObjectList__get_delayFilter (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1888,13 +2200,17 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 static void
@@ -1903,14 +2219,19 @@
 {
   GEAS_object_reference *id;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   id = get_current_object_reference (servant, servant->poa, ev);
-  if (ev->_major != CORBA_NO_EXCEPTION)
+  if (ev->_major != CORBA_NO_EXCEPTION) {
+    timer_fail_operation( TIMER_SKELETON );
     return;
+  }
+
   ObjectList_release (id, ev);
 
   free_geas_object_reference (id);
+  timer_done_operation( TIMER_SKELETON );
 }
 
 GEAS_ConnectionFactory
@@ -1921,6 +2242,7 @@
   impl_POA_GEAS_ConnectionFactory *newservant;
   PortableServer_ObjectId *objid;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   newservant = g_new0 (impl_POA_GEAS_ConnectionFactory, 1);
@@ -1931,6 +2253,7 @@
   CORBA_free (objid);
   retval = PortableServer_POA_servant_to_reference (poa, newservant, ev);
 
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1940,6 +2263,7 @@
 {
   PortableServer_ObjectId *objid;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   objid = PortableServer_POA_servant_to_id (servant->poa, servant, ev);
@@ -1956,10 +2280,12 @@
 {
   GEAS_Connection retval;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   retval = ConnectionFactory_guestLogin (ev);
 
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1971,10 +2297,14 @@
                                            CORBA_char *
                                            password, CORBA_Environment * ev)
 {
-  trace_functioncall ();
+  GEAS_Connection retval;
 
-  return (ConnectionFactory_unsecureLogin (username, password, ev));
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
+  trace_functioncall ();
 
+  retval = ConnectionFactory_unsecureLogin (username, password, ev);
+  timer_done_operation( TIMER_SKELETON );
+  return retval;
 }
 
 static CORBA_char *impl_GEAS_ConnectionFactory_getAuthenticationKey
@@ -1983,10 +2313,12 @@
 {
   CORBA_char *retval;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   retval = ConnectionFactory_getAuthenticationKey (username, ev);
 
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -1998,10 +2330,12 @@
 {
   GEAS_Connection retval;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   retval = ConnectionFactory_getConnection (username, passkey, ev);
 
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
@@ -2013,10 +2347,12 @@
 {
   GEAS_Admin retval;
 
+  timer_start_operation(TIMER_SKELETON,__PRETTY_FUNCTION__);
   trace_functioncall ();
 
   retval = ConnectionFactory_adminLogin (username, passkey, ev);
 
+  timer_done_operation( TIMER_SKELETON );
   return retval;
 }
 
Index: gnue/geas/src/objectcache/objectcache.c
diff -u gnue/geas/src/objectcache/objectcache.c:1.50 
gnue/geas/src/objectcache/objectcache.c:1.51
--- gnue/geas/src/objectcache/objectcache.c:1.50        Fri Jun  8 23:25:26 2001
+++ gnue/geas/src/objectcache/objectcache.c     Sun Jun 10 22:19:26 2001
@@ -19,7 +19,7 @@
    along with this program; if not, write to the Free Software Foundation,
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
    
-   $Id: objectcache.c,v 1.50 2001/06/09 06:25:26 baumannd Exp $
+   $Id: objectcache.c,v 1.51 2001/06/11 05:19:26 treshna Exp $
 */
 
 #include "config.h"
@@ -89,11 +89,14 @@
 void
 oc_shrink_cache (unsigned int new_max_length)
 {
+  timer_start_operation( TIMER_CACHE , __PRETTY_FUNCTION__ );
   trace_functioncall ();
 
   /* this can't extend it */
-  if (new_max_length >= cache_max_size)
+  if (new_max_length >= cache_max_size) {
+    timer_fail_operation( TIMER_CACHE);
     return;
+  }
 
   if (new_max_length < 0)
     cache_max_size += new_max_length;   /* shrink by -N spaces */
@@ -109,11 +112,14 @@
   /* still need space for 1 item in the cache, for reading/writing */
   if (cache_max_size < 1)
     cache_max_size = 1;
+
+  timer_done_operation( TIMER_CACHE );
 }
 
 void
 oc_extend_cache (unsigned int new_max_length)
 {
+  timer_start_operation( TIMER_CACHE , __PRETTY_FUNCTION__ );
   trace_functioncall ();
 
   /* this can't shrink it */
@@ -127,6 +133,8 @@
 
   cache_max_size = new_max_length;
   /* only allocates more space, no need to remove any objects */
+
+  timer_done_operation( TIMER_CACHE );
 }
 
 /** \brief make space in caxche
@@ -141,6 +149,7 @@
   GList *last;
   gboolean squeezed = FALSE;
 
+  timer_start_operation( TIMER_CACHE , __PRETTY_FUNCTION__ );
   trace_functioncall ();
 
   spaces_to_make = 1;
@@ -192,6 +201,7 @@
       message ("New cache size: %d objects", objectcache_count);
     }
 #endif
+  timer_done_operation( TIMER_CACHE );
 }
 
 /* allocate/free cache */
@@ -224,10 +234,12 @@
   ObjectData *obj;
   QueryData *q;
 
+  timer_start_operation( TIMER_CACHE , __PRETTY_FUNCTION__ );
   trace_functioncall ();
   obj = oc_find_cached_object_by_key (classname, key);
   if (obj)
     {
+      timer_fail_operation( TIMER_CACHE);
       return (obj);
     }
   /* not in cache, so load from database */
@@ -237,6 +249,7 @@
       obj = oc_objectstore_query_to_objectcache (q);
     }
   oql_free_query (q);
+  timer_done_operation( TIMER_CACHE );
   return (obj);
 }
 
@@ -247,6 +260,7 @@
   char *lookup;
   char *p;
 
+  timer_start_operation( TIMER_CACHE , __PRETTY_FUNCTION__ );
   trace_functioncall ();
   if (strncmp (classname, "root::", 6) == 0)
     {
@@ -261,6 +275,7 @@
   lookup = g_strdup_printf ("%s-%s", p, key);
   obj = g_hash_table_lookup (cachedata, lookup);
   g_free (lookup);
+  timer_done_operation( TIMER_CACHE );
   return (obj);
 }
 
@@ -273,6 +288,7 @@
   char *oid = g_strdup (key);
   char *p;
 
+  timer_start_operation( TIMER_CACHE , __PRETTY_FUNCTION__ );
   trace_functioncall ();
 
   /* if there's still any '-' characters, remove them */
@@ -307,6 +323,7 @@
   oid = NULL;
   if (!obj)
     {
+      timer_fail_operation( TIMER_CACHE);
       return (NULL);
     }
   /* printf( "created: %08lx > %08lx/%08lx  (%s/%s)\n", obj,
@@ -325,6 +342,7 @@
   printf ("now has %d entries\n", objectcache_count);
 #endif
   /* done */
+  timer_done_operation( TIMER_CACHE );
   return (obj);
 }
 
@@ -335,12 +353,14 @@
   /* GList *idxs, *ids; */
   /*  odl_class *c; */
 
+  timer_start_operation( TIMER_CACHE , __PRETTY_FUNCTION__ );
   trace_functioncall ();
 
   obj = g_hash_table_lookup (cachedata, object->hashkey);
   if (!obj)
     {
       /* object wasn't in the cache */
+      timer_fail_operation( TIMER_CACHE);
       return (FALSE);
     }
 #if 0
@@ -361,6 +381,7 @@
   objectcache_count -= 1;
   /* printf( "objectcache_count = %d\n" , objectcache_count ); */
 
+  timer_done_operation( TIMER_CACHE );
   return (TRUE);
 }
 
@@ -372,6 +393,7 @@
   int err;
   char *errmsg;
 
+  timer_start_operation( TIMER_CACHE , __PRETTY_FUNCTION__ );
   trace_functioncall ();
 
   /* remove from cache */
@@ -387,9 +409,11 @@
     {
       errormsg (errmsg);
       g_free (errmsg);
+      timer_fail_operation( TIMER_CACHE);
       return (FALSE);
     }
 
+  timer_done_operation( TIMER_CACHE );
   return (TRUE);
 }
 
@@ -427,6 +451,7 @@
   struct query_result *r = NULL;
   GHashTable *values;
 
+  timer_start_operation( TIMER_CACHE , __PRETTY_FUNCTION__ );
   trace_functioncall ();
   /* TODO: error checking, updating object flags */
 
@@ -440,6 +465,7 @@
   if (r == NULL || r->success != TRUE)
     {
       free_query_result (r);
+      timer_fail_operation( TIMER_CACHE);
       return;
     }
   free_query_result (r);
@@ -450,6 +476,7 @@
       printf ("TODO: error handler at %s/%d\n", __FILE__, __LINE__);
       exit (0);
     }
+  timer_done_operation( TIMER_CACHE );
 }
 
 /* Object flags */
Index: gnue/geas/src/security.c
diff -u gnue/geas/src/security.c:1.14 gnue/geas/src/security.c:1.15
--- gnue/geas/src/security.c:1.14       Sat Jun  9 08:20:37 2001
+++ gnue/geas/src/security.c    Sun Jun 10 22:19:26 2001
@@ -19,7 +19,7 @@
    along with this program; if not, write to the Free Software Foundation,
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
    
-   $Id: security.c,v 1.14 2001/06/09 15:20:37 ntiffin Exp $
+   $Id: security.c,v 1.15 2001/06/11 05:19:26 treshna Exp $
 
 */
 
@@ -77,7 +77,10 @@
      }
    else
      {
-       int count = GEAS_ObjectList__get_length( users , &ev );
+       int count;
+        printf( "getting count\n"  );
+        count = GEAS_ObjectList__get_length( users , &ev );
+        printf( "got count\n"  );
        if( ev._major != CORBA_NO_EXCEPTION )
          {
             errormsg( "Error counting users: %s" , CORBA_exception_id(&ev) );



reply via email to

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