예제 #1
0
    def __init__(self, context, keynodes=[], cpp_bridge=None):
        self.sc_context = context
        self.keynodes = ScKeynodes(self.sc_context)
        self.cpp = cpp_bridge
        self.events = ScEventManager(self.cpp)

        for k in keynodes:
            addr = self.keynodes[k]
            if not addr:
                raise ScKeynodeException(k)
예제 #2
0
    def __init__(self, ctx, cpp_bridge, keynodes=[]):
        self.__sc_context = ctx
        self.keynodes = ScKeynodes(self.__sc_context)

        self.cpp = cpp_bridge
        assert self.cpp

        self.__events = ScEventManager(self.cpp)
        self.KeynodesCheck(keynodes)

        self.is_running = True
        self.task_queue = queue.Queue()
        self.log = Log(self.__class__.__name__)
예제 #3
0
    def RunImpl(self, evt):
        self.cmd_addr = evt.other_addr
        assert self.cmd_addr.IsValid()

        # change state to a progress
        progress_edge = evt.edge_addr

        def change_progress(state: ScAddr):
            self.module.ctx.DeleteElement(progress_edge)
            self.module.ctx.CreateEdge(ScType.EdgeAccessConstPosPerm, state,
                                       self.cmd_addr)

        change_progress(ScKeynodes.kCommandProgressdAddr())

        # create result structure
        templ = ScTemplate()
        templ.TripleWithRelation(self.cmd_addr, ScType.EdgeDCommonVar,
                                 ScType.NodeVarStruct >> '_result',
                                 ScType.EdgeAccessVarPosPerm,
                                 self.keynodes[ScAgent.kNrelResult])

        gen_res = self.module.ctx.HelperGenTemplate(templ,
                                                    ScTemplateGenParams())
        assert gen_res.Size() > 0

        res_addr = gen_res['_result']
        self.result_set = ScSet(self.module.ctx, res_addr)

        # run implementation of command
        result = self.DoCommand()

        # generate result type
        self.module.ctx.CreateEdge(ScType.EdgeAccessConstPosPerm,
                                   ScKeynodes.GetResultCodeAddr(result),
                                   res_addr)
        change_progress(ScKeynodes.kCommandFinishedAddr())

        return result
예제 #4
0
    def __init__(self, ctx, cpp_bridge, keynodes=[]):
        self.__sc_context = ctx
        self.keynodes = ScKeynodes(self.__sc_context)

        self.cpp = cpp_bridge
        assert self.cpp

        self.__events = ScEventManager(self.cpp)
        self.KeynodesCheck(keynodes)

        self.is_running = True
        self.task_queue = queue.Queue()

        self.agents = []  # list of registered agents
예제 #5
0
 def __init__(self, module):
     self.module = module
     self.evt = None
     self.keynodes = ScKeynodes(module.ctx)
예제 #6
0
 def InitGlobal(module):
     ScAgent.keynodes = ScKeynodes(module.ctx)