Esempio n. 1
0
    def run(self):
        # Import elements of Core we need
        # These will be refreshed each time the Loader reloads
        from Core.loader import Loader
        from Core.exceptions_ import Quit, Reboot, Reload, Call999
        from Core.connection import Connection
        from Core.chanusertracker import CUT
        from Core.robocop import RoboCop
        from Core.router import Router
	from Core.actions import Action
        
        # Collect any garbage remnants that might have been left behind
        #  from an old loader or backup that wasn't properly dereferenced
        gc.collect()
        
        try:

            # Attach the IRC connection and configure
            self.irc = Connection.attach(*self.irc)
            # Attach the RoboCop/clients sockets and configure
            self.robocop = RoboCop.attach(*self.robocop)
            # Attach the CUT state
            self.cut = CUT.attach(*self.cut)
            
            # Operation loop
            Router.run()
        
        except Call999 as exc:
            # RoboCop server failed, restart it
            self.robocop = RoboCop.disconnect(str(exc))
            return
        
        except Reboot as exc:
            # Reset the connection first
            self.irc = Connection.disconnect(str(exc) or "Rebooting")
            print "%s Reloading..." % (time.asctime(),)
            # Reimport all the modules
            Loader.reload()
            return
        
        except Reload:
            # Detach the current CUT state
            self.cut = CUT.detach()
            print "%s Reloading..." % (time.asctime(),)
            # Reimport all the modules
            Loader.reload()
            return
        
        except (Quit, KeyboardInterrupt, SystemExit) as exc:
            self.irc = Connection.disconnect(str(exc) or "Bye!")
            self.robocop = RoboCop.disconnect(str(exc) or "Bye!")
            sys.exit("Bye!")
Esempio n. 2
0
    def run(self):
        # Import elements of Core we need
        # These will be refreshed each time the Loader reloads
        from Core.loader import Loader
        from Core.exceptions_ import Quit, Reboot, Reload, Call999
        from Core.connection import Connection
        from Core.chanusertracker import CUT
        from Core.robocop import RoboCop
        from Core.router import Router

        # Collect any garbage remnants that might have been left behind
        #  from an old loader or backup that wasn't properly dereferenced
        gc.collect()

        try:
            # Attach the IRC connection and configure
            self.irc = Connection.attach(*self.irc)
            # Attach the RoboCop/clients sockets and configure
            self.robocop = RoboCop.attach(*self.robocop)
            # Attach the CUT state
            self.cut = CUT.attach(*self.cut)

            # Operation loop
            Router.run()

        except Call999 as exc:
            # RoboCop server failed, restart it
            self.robocop = RoboCop.disconnect(str(exc))
            return

        except Reboot as exc:
            # Reset the connection first
            self.irc = Connection.disconnect(str(exc) or "Rebooting")
            print "%s Reloading..." % (time.asctime(), )
            # Reimport all the modules
            Loader.reload()
            return

        except Reload:
            # Detach the current CUT state
            self.cut = CUT.detach()
            print "%s Reloading..." % (time.asctime(), )
            # Reimport all the modules
            Loader.reload()
            return

        except (Quit, KeyboardInterrupt, SystemExit) as exc:
            self.irc = Connection.disconnect(str(exc) or "Bye!")
            self.robocop = RoboCop.disconnect(str(exc) or "Bye!")
            sys.exit("Bye!")
Esempio n. 3
0
 def run(self):
     Connection = None
     try: # break out with Quit exceptions
         
         # Connection loop
         #   Loop back to reset connection
         while True:
             
             try: # break out with Reboot exceptions
                 
                 # Load up configuration
                 from Core.config import Config
                 self.nick = Config.get("Connection", "nick")
                 
                 # Import the Loader
                 # In first run this will do the initial import
                 # Later the import is done by a call to .reboot(),
                 #  but we need to import each time to get the new Loader
                 from Core.loader import Loader
                 
                 # System loop
                 #   Loop back to reload modules
                 while True:
                     
                     try: # break out with Reload exceptions
                         
                         # Collect any garbage remnants that might have been left behind
                         #  from an old loader or backup that wasn't properly dereferenced
                         gc.collect()
                         
                         # Import elements of Core we need
                         # These will have been refreshed by a call to
                         #  either Loader.reboot() or Loader.reload()
                         from Core.db import session
                         from Core.connection import Connection
                         from Core.router import Router
                         from Core.robocop import RoboCop
                         
                         # Attach the IRC connection and configure
                         self.irc = Connection.attach(self.irc, self.nick)
                         # Attach the RoboCop/clients sockets and configure
                         self.robocop = RoboCop.attach(*self.robocop)
                         
                         # Operation loop
                         Router.run()
                         
                     except Call999 as exc:
                         # RoboCop server failed, restart it
                         self.robocop = RoboCop.disconnect(str(exc))
                         continue
                     
                     except Reload:
                         print "%s Reloading..." % (time.asctime(),)
                         # Reimport all the modules
                         Loader.reload()
                         continue
                 
             except Reboot as exc:
                 # Reset the connection first
                 self.irc = Connection.disconnect(str(exc) or "Rebooting")
                 
                 print "%s Rebooting..." % (time.asctime(),)
                 # Reboot the Loader and reimport all the modules
                 Loader.reboot()
                 continue
         
     except (Quit, KeyboardInterrupt, SystemExit) as exc:
         if Connection is None:
             sys.exit(exc)
         Connection.disconnect(str(exc) or "Bye!")
         sys.exit("Bye!")