def poll(): global lasttime_snasrv global lasttime_server global lasttime_event global lasttime_atmx25 global lasttime_refresh global lasttime_settime global lasttime_poll #--------------------------now now = int(time.time()) sys.stdout.flush() sys.stderr.flush() if now == lasttime_poll: return lasttime_poll = now #--------------------------shutdown drain = 0 if cfg.stopping: log.l.LogIt('RTP002', '1', 'stopping', ()) # close sna server channel if cfg.sna_hdlr: cfg.sna_hdlr.handle_close() drain = 1 # wait io if drain: return # close data and event channels (if open) if cfg.event_hdlr: cfg.event_ip = '' cfg.event_hdlr.handle_close() drain = 1 if cfg.data_hdlr: cfg.data_ip = '' cfg.data_hdlr.handle_close() drain = 1 # wait io if drain: return # close server channels for ip in cfg.servers.keys(): if cfg.servers[ip]['cmdchan']: cfg.servers[ip]['cmdchan'].handle_close() drain = 1 # wait io if drain: return # stop cmd listener if cfg.listeners.has_key('cmd'): cfg.listeners['cmd'].handle_close() drain = 1 # wait io if drain: return cfg.counter = cfg.counter - 1 if cfg.counter >= 0: log.l.LogIt('RTP003', '1', 'counter', ()) return print 'socket_map', sock.socket_map # to be found in init.log print 'router: cannot get here' sys.exit(0) #--------------------------check atm request timeouts for wsid in cfg.atm.keys(): if cfg.atm[wsid]['gastate'] == '=': log.l.LogIt('RTP004', '1', '%s: wait for config server', (wsid)) if (now - cfg.atm[wsid]['ga_conn']) > (routercfg.config): cfg.atm[wsid]['ga_conn'] = now ga_hdlr.getdomain_next(wsid) #--------------------------restart ga listeners # Listen for client GAs for port in routercfg.DomainPorts: if not cfg.listeners.has_key(port): ga_hdlr.ga(port) #--------------------------reconnect snasrv if (now - lasttime_snasrv) > routercfg.snasrv: lasttime_snasrv = now if cfg.sna_use: if not cfg.sna_hdlr: sna_hdlr.sna() #--------------------------reconnect cfg, bnmroutc, ga, stat if (now - lasttime_server) > routercfg.server: lasttime_server = now # check ports, attempt to reopen as necessary list = cfg.servers.keys() list.sort() for ip in list: if not cfg.servers[ip]['cmdchan']: srv_hdlr.srv(ip) if not cfg.servers[ip]['routc']: routc_hdlr.bnmroutc(ip) else: cfg.servers[ip]['routc'].routcHB() list = cfg.atm.keys() list.sort() for wsid in list: # check open ga's, attempt to connect bnm as necessary if cfg.atm[wsid]['gastate'] == 'o' and cfg.atm[wsid]['bnmstate'] != 'o': ga_hdlr.gaconnect(wsid, 0) if not cfg.stat_hdlr: cfg.stat_buf = [] evt_hdlr.stat() #--------------------------reconnect event and data if (now - lasttime_event) > routercfg.event: lasttime_event = now if not cfg.event_hdlr: if cfg.event_ip != '': evt_hdlr.event() else: if cfg.event_ip == '': cfg.event_hdlr.handle_close() if not cfg.data_hdlr: if cfg.data_ip != '': evt_hdlr.data() else: if cfg.data_ip == '': cfg.data_hdlr.handle_close() #--------------------------reconnect X25 ATMs if (now - lasttime_atmx25) > routercfg.atmx25: lasttime_atmx25 = now if cfg.sna_use: sna_hdlr.snapoll() #--------------------------refresh aprstat if routercfg.refresh: if (now - lasttime_refresh) > routercfg.refresh: lasttime_refresh = now evt_hdlr.refresh()
signal.signal(signal.SIGINT, sig_end) signal.signal(signal.SIGTERM, sig_end) signal.signal(signal.SIGHUP, signal.SIG_IGN) # ------------------------------------------------ # Get Start-up Configuration Information from initcfg.InitCfg() # ------------------------------------------------ # Connect to all aprsrv and bnmroutc channels list = cfg.servers.keys() list.sort() for ip in list: if not cfg.servers[ip]["cmdchan"]: srv_hdlr.srv(ip) if not cfg.servers[ip]["routc"]: routc_hdlr.bnmroutc(ip) # ------------------------------------------------ try: # Listen for connections from 'aprcmd's cmd_hdlr.cmd() # Set SNA Server connect flag try: f = open("/router/snasrv/snasrv", "r") f.close() cfg.sna_use = 1 except: