ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/ihost/ihost.c
(Generate patch)

Comparing projects/cms/source/ihost/ihost.c (file contents):
Revision 1.9 by pajs, Fri May 17 11:21:17 2002 UTC vs.
Revision 1.13 by pajs, Sun May 19 14:44:36 2002 UTC

# Line 1 | Line 1
1 + /*
2 + * i-scream central monitoring system
3 + * Copyright (C) 2000-2002 i-scream
4 + *
5 + * This program is free software; you can redistribute it and/or
6 + * modify it under the terms of the GNU General Public License
7 + * as published by the Free Software Foundation; either version 2
8 + * of the License, or (at your option) any later version.
9 + *
10 + * This program is distributed in the hope that it will be useful,
11 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 + * GNU General Public License for more details.
14 + *
15 + * You should have received a copy of the GNU General Public License
16 + * along with this program; if not, write to the Free Software
17 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 + */
19 +
20   #include <stdio.h>
21   #include <sys/socket.h>
22   #include <stdlib.h>
# Line 6 | Line 25
25   #include <netinet/in.h>
26   #include "ukcprog.h"
27   #include <netdb.h>
28 < #include <strings.h>
28 > #include <string.h>
29   #include "statgrab.h"
30 + #include <time.h>
31  
32   #define RECONFIGURE_RETURN_CODE 2
33   #define UDP_MAX_PACKET_SIZE 8192
# Line 274 | Line 294 | int heartbeat(ihost_state_t *ihost_state){
294                  return -1;
295          }
296  
297 +        fflush(fm_fd_r);
298 +        fflush(fm_fd_w);
299 +
300          if(fclose(fm_fd_r) !=0){
301                  errf("Failed to close read FD (%m)");
302                  return -1;
# Line 362 | Line 385 | int send_stats(ihost_state_t *ihost_state, char *data_
385                  return -1;
386          }
387  
388 +        close(sd);
389 +
390 +        printf("%s\n",data_stream);
391          return 0;      
392   }
393  
# Line 369 | Line 395 | int main(int argc, char **argv){
395          ihost_state_t ihost_state;
396          int heartbeat_exit;
397          int counter=0;
398 <        long udp_time=0, tcp_time=0, cur_time=0;
398 >        long udp_time=0, tcp_time=0, stat_grab_time=0, cur_time=0;
399          int sleep_delay=0;
400          char *xml_stats;
401  
# Line 397 | Line 423 | int main(int argc, char **argv){
423                  exit(1);
424          }
425  
400        /* get starting stats */        
401        if((heartbeat(&ihost_state)) == -1){
402                errf("inital heartbeat failed (%m)");
403                exit(1);
404        }
405
406        
407        if((xml_stats=stat_grab(&ihost_state, counter)) == NULL){
408                errf("Failed to get stats (%m)");
409                exit(1);
410        }
411
412
426          for(;;){
427                  cur_time=time(NULL);
428                  if(cur_time>=tcp_time){
429 +                        /*printf("sending TCP\n");*/
430                          heartbeat_exit=heartbeat(&ihost_state);
431                          if(heartbeat_exit==RECONFIGURE_RETURN_CODE){
432 <                                errf("heartbeat needs to be reconfigured");
432 >                                /*errf("heartbeat needs to be reconfigured");*/
433                                  ihost_configure(&ihost_state);
434                                  /* So udp doesn't wait til next sending before updating */
435                                  udp_time=0;
# Line 426 | Line 440 | int main(int argc, char **argv){
440                          }
441                          tcp_time=time(NULL)+ihost_state.tcp_update_time;
442                  }
443 +
444                  if(cur_time>=udp_time){
445 <                        send_stats(&ihost_state, xml_stats);
446 <                        free(xml_stats);
447 <                        if((xml_stats=stat_grab(&ihost_state, counter)) == NULL){
445 >                        /*printf("sending UDP\n");*/
446 >                        stat_grab_time=time(NULL);
447 >                        if((xml_stats=stat_grab(&ihost_state, counter++)) == NULL){
448                                  errf("Failed to get stats (%m)");
449                                  exit(1);
450                          }
451 <                        udp_time=time(NULL)+ihost_state.udp_update_time;
451 >                        stat_grab_time=time(NULL)-stat_grab_time;
452 >                        send_stats(&ihost_state, xml_stats);
453 >                        free(xml_stats);
454 >                        udp_time=time(NULL)+ihost_state.udp_update_time-stat_grab_time;
455                  }
456 <                if(tcp_time>udp_time){
457 <                        sleep_delay=time(NULL)-tcp_time;
456 >
457 >                if(tcp_time<udp_time){
458 >                        sleep_delay=tcp_time-time(NULL);
459                  }else{
460 <                        sleep_delay=time(NULL)-udp_time;
460 >                        sleep_delay=udp_time-time(NULL);
461                  }
462 <                sleep(sleep_delay);
462 >
463 >                /*printf("tcp epoc: %ld \t udp epoc: %ld\ntime:%ld \tsleeping: %d\n", tcp_time, udp_time, time(NULL), sleep_delay);*/
464 >                if(sleep_delay>0) sleep(sleep_delay);
465          }
466          return 0;
467   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines