Esempio n. 1
0
    def initialise(self,frontend,scaffold,cookie,info):
        self.scaffold = scaffold
        self.frontend = frontend
        self.frontend_context = piw.tsd_snapshot()

        self.garbage_context = self.__create_context('eigend-garbage',None,False)

        piw.tsd_thing(self.fgthing)

        self.stdio = (sys.stdout,sys.stderr)

        if not self.opts.noredirect:
            sys.stdout = session.Logger()
            sys.stderr = sys.stdout

        self.backend_context = self.__create_context('eigend-backend',None,False)

        def bginit():
            self.agent = Agent(self)
            piw.tsd_thing(self.bgthing)

        self.collector = GarbageCollector(self.scaffold,self.garbage_context)
        self.collector.start()
        self.bugfiler.start(cookie,info)
        self.run_background(bginit)
Esempio n. 2
0
    def start_http(self):
        self.stop_http()

        port = self[5].get_value()
        if port:
            print "starting up HTTP server on port", port
            self.snapshot = piw.tsd_snapshot()
            server = InterruptableHTTPServer(self, self.snapshot, '0.0.0.0', port, IlluminatorRequestHandler)
            server.start()
            self.httpServer = server
Esempio n. 3
0
 def run_bg_sync(self,func,*args,**kwds):
     s = piw.tsd_snapshot()
     try:
         piw.setenv(self.__env_bg.getenv())
         piw.tsd_lock()
         try:
             return func(*args,**kwds)
         finally:
             piw.tsd_unlock()
     finally:
         s.install()
Esempio n. 4
0
    def server_opened(self):
        agent.Agent.server_opened(self)
        self.advertise('<language>')

        # startup stage server
        print "starting up stage server"

        self.snapshot = piw.tsd_snapshot()

        self.stageServer = stage_server.StageXMLRPCServer(self, self.snapshot, self.xmlrpc_server_port)
        self.stageServer.start()
        self.start_database()
Esempio n. 5
0
    def __run(self,ctx,func,*args,**kwds):
        current_context = piw.tsd_snapshot()

        try:
            ctx.install()
            piw.tsd_lock()
            try:
                return func(*args,**kwds)
            finally:
                piw.tsd_unlock()
        finally:
            current_context.install()
Esempio n. 6
0
    def __init__(self, backend, ordinal):
        self.__backend = backend
        self.__registry = workspace.get_registry()

        self.__foreground = piw.tsd_snapshot()

        agent.Agent.__init__(self,
                             signature=upgrade_agentd,
                             names='eigend',
                             protocols='agentfactory setupmanager set',
                             container=3,
                             ordinal=ordinal,
                             vocab=self.__registry.get_vocab())

        self.ordinal = ordinal
        self.uid = '<eigend%d>' % ordinal

        self.__workspace = workspace.Workspace(piw.tsd_scope(), self.__backend,
                                               self.__registry)

        self[2] = self.__workspace

        constraint = 'or([%s])' % ','.join([
            '[matches([%s],%s)]' % (m.replace('_', ','), m)
            for m in self.__registry.modules()
        ])
        self.add_verb2(
            1,
            'create([un],None,role(None,[concrete,issubject(create,[role(by,[instance(~self)])])]))',
            callback=self.__uncreateverb)
        self.add_verb2(2,
                       'create([],None,role(None,[abstract,%s]))' % constraint,
                       callback=self.__createverb)
        self.add_verb2(3, 'save([],None,role(None,[abstract]))',
                       self.__saveverb)
        self.add_verb2(4, 'load([],None,role(None,[abstract]))',
                       self.__loadverb)
        self.add_verb2(
            5,
            'set([],None,role(None,[abstract,matches([startup])]),role(to,[abstract]))',
            self.__set_startup)
        self.add_verb2(
            6,
            'create([],None,role(None,[abstract,%s]),role(in,[proto(rigouter)]))'
            % constraint,
            callback=self.__rigcreateverb)
        self.add_verb2(
            7,
            'create([un],None,role(None,[concrete,issubjectextended(create,by,[role(by,[proto(rigouter)])])]))',
            callback=self.__riguncreateverb)

        piw.tsd_server(self.uid, self)
Esempio n. 7
0
    def run_background(self,func,*args,**kwds):
        current_context = piw.tsd_snapshot()

        try:
            piw.setenv(self.backend_context.getenv())
            piw.tsd_lock()
            try:
                return func(*args,**kwds)
            finally:
                piw.tsd_unlock()

        finally:
            current_context.install()
Esempio n. 8
0
    def server_opened(self):
        agent.Agent.server_opened(self)
        self.advertise('<language>')
        self.database.start('<main>')

        # startup stage server
        print "starting up stage server"

        self.snapshot = piw.tsd_snapshot()

        self.stageServer = stage_server.stageXMLRPCServer(
            self, self.snapshot, self.xmlrpc_server_port)
        self.stageServer.start()

        print "server proxy", "http://0.0.0.0:" + str(self.xmlrpc_server_port)
        self.dummyStageClient = xmlrpclib.ServerProxy(
            "http://0.0.0.0:" + str(self.xmlrpc_server_port))
Esempio n. 9
0
    def __init__(self,ordinal,path,icon=None):
        self.__foreground = piw.tsd_snapshot()
        agent.Agent.__init__(self,signature=upgrade_agentd,names='eigend', protocols='agentfactory setupmanager set', icon = icon, container = 3, ordinal = ordinal)

        self.ordinal = ordinal
        self.uid = '<eigend%d>' % ordinal

        self.dynamic = DynamicPluginList(self)
        self.node = random.randrange(0, 1<<48L) | 0x010000000000L

        self[2] = self.dynamic

        self.registry = registry.Registry()

        for p in path:
            self.registry.scan_path(p,AgentFactory)

        self.registry.dump(lambda m: m.dump())

        constraint = 'or([%s])' % ','.join(['[matches([%s],%s)]' % (m.replace('_',','),m) for m in self.registry.modules()])
        self.add_verb2(1,'create([un],None,role(None,[concrete,issubject(create,[role(by,[cnc(~self)])])]))',callback=self.__destroy)
        self.add_verb2(2,'create([],None,role(None,[abstract,%s]))' % constraint, callback=self.__create)
        self.add_verb2(3,'save([],None,role(None,[abstract]))', self.__saveverb)
        self.add_verb2(4,'load([],None,role(None,[abstract]))', self.__loadverb)
        self.add_verb2(5,'set([],None,role(None,[abstract,matches([startup])]),role(to,[abstract]))', self.__set_startup)

        dbfile = resource.user_resource_file('global',resource.current_setup)
        if os.path.exists(dbfile):
            os.remove(dbfile)

        self.database = state.open_database(dbfile,True)
        self.trunk = self.database.get_trunk()
        upgrade.set_version(self.trunk,version.version)
        self.flush()

        self.index = index.Index(self.factory,False)

        self.__load_queue = []
        self.__load_result = None
        self.__plugin_count = 0
        self.__load_errors = None
Esempio n. 10
0
    def initialise(self, frontend, scaffold, cookie, info):
        try:
            self.scaffold = scaffold
            self.frontend = frontend
            self.frontend_context = piw.tsd_snapshot()

            self.garbage_context = self.__create_context('eigend-garbage')

            piw.tsd_thing(self.fgthing)

            self.stdio = (sys.stdout, sys.stderr)

            if not self.opts.noredirect:
                sys.stdout = session.Logger()
                sys.stderr = sys.stdout

            self.backend_context = self.__create_context('eigend-backend')

            resource.clean_current_setup()

            def bginit():
                self.agent = agentd.Agent(self, 1)
                piw.tsd_thing(self.bgthing)

            self.collector = GarbageCollector(self.scaffold,
                                              self.garbage_context)
            self.collector.start()

            if os.getenv('PI_NOCHECK') is None:
                self.latest_release.start(cookie, info)

            self.run_background(bginit)
        except:
            print >> sys.__stdout__, 'Initialisation failure'
            traceback.print_exc(limit=None, file=sys.__stdout__)
            raise
Esempio n. 11
0
 def startup(self, m):
     self.browser = Browser(self.__address)
     self.snapshot = piw.tsd_snapshot()
     self.__event.set()
Esempio n. 12
0
def make_locked_callable(callable):
    """
    Convert a callable into one which runs in a locked loop
    """
    snapshot = piw.tsd_snapshot()
    return lambda *args: call_locked_callable(snapshot,callable,*args)
Esempio n. 13
0
 def __init__(self):
     self.__env = piw.tsd_snapshot()
     self.__buffer = []
Esempio n. 14
0
 def __init__(self, backend):
     threading.Thread.__init__(self)
     self.__event = threading.Event()
     self.__context = piw.tsd_snapshot()
     self.__backend = backend
     self.__cookie = ""