1 | /****************** 2 | Copyright (c) 2002 RIPE NCC 3 | 4 | All Rights Reserved 5 | 6 | Permission to use, copy, modify, and distribute this software and its 7 | documentation for any purpose and without fee is hereby granted, 8 | provided that the above copyright notice appear in all copies and that 9 | both that copyright notice and this permission notice appear in 10 | supporting documentation, and that the name of the author not be 11 | used in advertising or publicity pertaining to distribution of the 12 | software without specific, written prior permission. 13 | 14 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 15 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL 16 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 17 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 18 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 19 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20 | ***************************************/ 21 | 22 | #ifndef TA_H 23 | #define TA_H 24 | 25 | #include <glib.h> 26 | #include <pthread.h> 27 | #include <stdio.h> 28 | 29 | #include "stubs.h" 30 | #include "memwrap.h" 31 | #include "sk.h" 32 | #include "timediff.h" 33 | 34 | /* thread activity monitor */ 35 | #define TA_TYPE_LEN 16 36 | #define TA_ACT_LEN 256 37 | #define TA_PRINT_LEN (TA_ACT_LEN+64) 38 | 39 | typedef struct 40 | { 41 | pthread_t thread_id; /* thread id */ 42 | ut_timer_t sessionstart; /* time the session started */ 43 | ut_timer_t taskstart; /* time the last task started */ 44 | int sock; /* socket */ 45 | sk_conn_st *condat; /* sk's connection data struct */ 46 | char type[TA_TYPE_LEN]; 47 | char activity[TA_ACT_LEN]; /* current activity (eg query) */ 48 | int tasks; /* number of activities(used to calculate the average) */ 49 | } ta_str_t; 50 | 51 | 52 | #ifdef TA_IMPL 53 | /* GLOBALs (private to the module)*/ 54 | GList *ta_list = NULL; 55 | pthread_mutex_t ta_mutex = PTHREAD_MUTEX_INITIALIZER; 56 | #endif 57 | 58 | #ifdef __cplusplus 59 | extern "C" { 60 | #endif 61 | 62 | 63 | /* prototypes */ 64 | void TA_add(int sock, char *type); 65 | void TA_delete(void); 66 | void TA_setactivity(char *activity); 67 | void TA_setcondat(sk_conn_st *condat); 68 | char * TA_tostring(void); 69 | void TA_increment(void); 70 | void TA_trigger(char *type, int sock, pthread_t thread_id); 71 | void TA_reset_counters(pthread_t thread_id); 72 | 73 | #ifdef __cplusplus 74 | } 75 | #endif 76 | 77 | 78 | #endif 79 |