/* * afd_load_callbacks.c - Part of AFD, an automatic file distribution * program. * Copyright (c) 1998 - 2013 Holger Kiehl * * 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 of the License, 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; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "afddefs.h" DESCR__S_M3 /* ** NAME ** afd_load_callbacks - various callback functions for afd_load ** ** SYNOPSIS ** void close_button(Widget w, XtPointer client_data, XtPointer call_data) ** void get_connection_value(Widget w, XtPointer client_data, XtPointer chart_value) ** void get_file_value(Widget w, XtPointer client_data, XtPointer chart_value) ** void get_kbyte_value(Widget w, XtPointer client_data, XtPointer chart_value) ** void get_transfer_value(Widget w, XtPointer client_data, XtPointer chart_value) ** ** DESCRIPTION ** ** RETURN VALUES ** None. ** ** AUTHOR ** H.Kiehl ** ** HISTORY ** 14.03.1998 H.Kiehl Created ** */ DESCR__E_M3 #include /* sprintf() */ #include /* free() */ #include #include #include #include #include #include "afd_load.h" /* External global variables. */ extern Widget current_value_w; extern int no_of_hosts; extern double prev_value, update_interval; extern struct filetransfer_status *fsa; extern struct afd_status *p_afd_status; extern struct afdstat *afd_stat; /*############################ close_button() ###########################*/ void close_button(Widget w, XtPointer client_data, XtPointer call_data) { exit(0); } /*####################### get_connection_value() ########################*/ void get_connection_value(Widget w, XtPointer client_data, XtPointer chart_value) { register int i; double connections = 0.0; (void)check_fsa(YES, AFDD); for (i = 0; i < no_of_hosts; i++) { connections += (double)fsa[i].connections; } connections = prev_value + ((connections - prev_value) / 8.0); if (connections < 0.01) { connections = 0.0; } *(double *)chart_value = (double)((connections - prev_value) / update_interval); if (connections != prev_value) { char str_line[MAX_CURRENT_VALUE_DIGIT + 1]; (void)sprintf(str_line, "%10.2f", *(double *)chart_value); XmTextSetString(current_value_w, str_line); } prev_value = connections; return; } /*########################## get_file_value() ###########################*/ void get_file_value(Widget w, XtPointer client_data, XtPointer chart_value) { register int i; double no_of_files = 0.0; (void)check_fsa(YES, AFDD); for (i = 0; i < no_of_hosts; i++) { no_of_files += (double)fsa[i].file_counter_done; } no_of_files = prev_value + ((no_of_files - prev_value) / 8.0); if (no_of_files < 0.01) { no_of_files = 0.0; } *(double *)chart_value = (double)((no_of_files - prev_value) / update_interval); if (no_of_files != prev_value) { char str_line[MAX_CURRENT_VALUE_DIGIT + 1]; (void)sprintf(str_line, "%10.2f", *(double *)chart_value); XmTextSetString(current_value_w, str_line); } prev_value = no_of_files; return; } /*########################## get_kbyte_value() ##########################*/ void get_kbyte_value(Widget w, XtPointer client_data, XtPointer chart_value) { register int i; double kbytes_send = 0.0; (void)check_fsa(YES, AFDD); for (i = 0; i < no_of_hosts; i++) { kbytes_send += (double)fsa[i].bytes_send; } kbytes_send /= 1024.0; kbytes_send = prev_value + ((kbytes_send - prev_value) / 8.0); if (kbytes_send < 0.01) { kbytes_send = 0.0; } *(double *)chart_value = (double)((kbytes_send - prev_value) / (update_interval * 100.0)); if (*(double *)chart_value < 0.01) { *(double *)chart_value = 0.0; } if (kbytes_send != prev_value) { char str_line[MAX_CURRENT_VALUE_DIGIT + 1]; (void)sprintf(str_line, "%10.2f", *(double *)chart_value * 100.0); XmTextSetString(current_value_w, str_line); } prev_value = kbytes_send; return; } /*######################### get_transfer_value() ########################*/ void get_transfer_value(Widget w, XtPointer client_data, XtPointer chart_value) { double active_transfers; active_transfers = prev_value + (((double)p_afd_status->no_of_transfers - prev_value) / 8.0); if (active_transfers < 0.01) { active_transfers = 0.0; } *(double *)chart_value = active_transfers; if (active_transfers != prev_value) { char str_line[MAX_CURRENT_VALUE_DIGIT + 1]; (void)sprintf(str_line, "%10.2f", *(double *)chart_value); XmTextSetString(current_value_w, str_line); } prev_value = active_transfers; return; }