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.15 by pajs, Sun May 19 15:14:31 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>
2 #include <sys/socket.h>
21   #include <stdlib.h>
22   #include <unistd.h>
23   #include <syslog.h>
24   #include <netinet/in.h>
25   #include "ukcprog.h"
26   #include <netdb.h>
27 < #include <strings.h>
27 > #include <string.h>
28   #include "statgrab.h"
29 + #include <time.h>
30 + #include <sys/socket.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          return 0;      
391   }
392  
# Line 369 | Line 394 | int main(int argc, char **argv){
394          ihost_state_t ihost_state;
395          int heartbeat_exit;
396          int counter=0;
397 <        long udp_time=0, tcp_time=0, cur_time=0;
397 >        long udp_time=0, tcp_time=0, stat_grab_time=0, cur_time=0;
398          int sleep_delay=0;
399          char *xml_stats;
400  
# Line 397 | Line 422 | int main(int argc, char **argv){
422                  exit(1);
423          }
424  
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
425          for(;;){
426                  cur_time=time(NULL);
427                  if(cur_time>=tcp_time){
428 +                        /*printf("sending TCP\n");*/
429                          heartbeat_exit=heartbeat(&ihost_state);
430                          if(heartbeat_exit==RECONFIGURE_RETURN_CODE){
431 <                                errf("heartbeat needs to be reconfigured");
431 >                                /*errf("heartbeat needs to be reconfigured");*/
432                                  ihost_configure(&ihost_state);
433                                  /* So udp doesn't wait til next sending before updating */
434                                  udp_time=0;
# Line 426 | Line 439 | int main(int argc, char **argv){
439                          }
440                          tcp_time=time(NULL)+ihost_state.tcp_update_time;
441                  }
442 +
443                  if(cur_time>=udp_time){
444 <                        send_stats(&ihost_state, xml_stats);
445 <                        free(xml_stats);
446 <                        if((xml_stats=stat_grab(&ihost_state, counter)) == NULL){
444 >                        /*printf("sending UDP\n");*/
445 >                        stat_grab_time=time(NULL);
446 >                        if((xml_stats=stat_grab(&ihost_state, counter++)) == NULL){
447                                  errf("Failed to get stats (%m)");
448                                  exit(1);
449                          }
450 <                        udp_time=time(NULL)+ihost_state.udp_update_time;
450 >                        stat_grab_time=time(NULL)-stat_grab_time;
451 >                        send_stats(&ihost_state, xml_stats);
452 >                        free(xml_stats);
453 >                        udp_time=time(NULL)+ihost_state.udp_update_time-stat_grab_time;
454                  }
455 <                if(tcp_time>udp_time){
456 <                        sleep_delay=time(NULL)-tcp_time;
455 >
456 >                if(tcp_time<udp_time){
457 >                        sleep_delay=tcp_time-time(NULL);
458                  }else{
459 <                        sleep_delay=time(NULL)-udp_time;
459 >                        sleep_delay=udp_time-time(NULL);
460                  }
461 <                sleep(sleep_delay);
461 >
462 >                /*printf("tcp epoc: %ld \t udp epoc: %ld\ntime:%ld \tsleeping: %d\n", tcp_time, udp_time, time(NULL), sleep_delay);*/
463 >                if(sleep_delay>0) sleep(sleep_delay);
464          }
465          return 0;
466   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines