예제 #1
0
파일: trace.py 프로젝트: JohannesEbke/a4
 def wrapfunc(*wrap_args, **wrap_kwargs):
     process_id = pycsp.current_process_id()
     sendTrace({'type':'StartProcess', 'func_name':func.func_name, 'process_id':process_id})
     try:
         func(*wrap_args, **wrap_kwargs)
     finally:
         sendTrace({'type':'QuitProcess', 'func_name':func.func_name, 'process_id':process_id})
예제 #2
0
    def __call__(self, msg):
        process_id = pycsp.current_process_id()
        sendTrace({
            'type': 'BlockOnWrite',
            'id': self.count,
            'chan_name': self.wrapped.channel.name,
            'process_id': process_id
        })
        self.wrapped.__call__(msg)
        sendTrace({
            'type': 'DoneWrite',
            'id': self.count,
            'chan_name': self.wrapped.channel.name,
            'process_id': process_id
        })

        #        try:
        #            sendTrace({'type':'BlockOnWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
        #            self.wrapped.__call__(msg)
        #            sendTrace({'type':'DoneWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
        #        except pycsp.ChannelRetireException:
        #            sendTrace({'type':'PoisonWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
        #            raise pycsp.ChannelRetireException
        #        except pycsp.ChannelPoisonException:
        #            sendTrace({'type':'RetireWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
        #            raise pycsp.ChannelPoisonException

        self.count += 1
예제 #3
0
파일: trace.py 프로젝트: JohannesEbke/a4
def TraceMsg(s):
    """ TraceMsg(<message>)
    Will add the trace message to the log:
      {'type':'Msg', 'msg':<message>}
    
    """
    sendTrace({'type':'Msg', 'process_id':pycsp.current_process_id(), 'msg':str(s)})
예제 #4
0
파일: trace.py 프로젝트: rbrewer123/pycsp
def TraceMsg(s):
    """ TraceMsg(<message>)
    Will add the trace message to the log:
      {'type':'Msg', 'msg':<message>}
    
    """
    sendTrace({"type": "Msg", "process_id": pycsp.current_process_id(), "msg": str(s)})
예제 #5
0
파일: trace.py 프로젝트: JohannesEbke/a4
 def __call__(self):
     process_id = pycsp.current_process_id()
     sendTrace({'type':'BlockOnRead', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
     msg = self.wrapped.__call__()
     sendTrace({'type':'DoneRead', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
     self.count += 1
     return msg
예제 #6
0
파일: trace.py 프로젝트: rbrewer123/pycsp
 def wrapfunc(*wrap_args, **wrap_kwargs):
     process_id = pycsp.current_process_id()
     sendTrace({"type": "StartProcess", "func_name": func.func_name, "process_id": process_id})
     try:
         func(*wrap_args, **wrap_kwargs)
     finally:
         sendTrace({"type": "QuitProcess", "func_name": func.func_name, "process_id": process_id})
예제 #7
0
 def retire(self):
     process_id = pycsp.current_process_id()
     sendTrace({
         'type': 'Retire',
         'id': self.count,
         'chan_name': self.wrapped.channel.name,
         'process_id': process_id
     })
     self.wrapped.retire()
예제 #8
0
 def poison(self):
     process_id = pycsp.current_process_id()
     sendTrace({
         'type': 'Poison',
         'id': self.count,
         'chan_name': self.wrapped.channel.name,
         'process_id': process_id
     })
     self.wrapped.poison()
예제 #9
0
파일: trace.py 프로젝트: JohannesEbke/a4
    def __init__(self, guards):
        self.wrapped = pycsp.Alternation(guards)
        self.wrapped.set_execute_frame(-2)
        self.set_execute_frame = self.wrapped.set_execute_frame

        process_id = pycsp.current_process_id()
        val = {'type':'Alternation', 'guards':[], 'process_id':process_id}
        for g_tuple in self.wrapped.guards:
            val['guards'].append(self.__translate(g_tuple[0]))
        sendTrace(val)
예제 #10
0
파일: trace.py 프로젝트: rbrewer123/pycsp
    def __init__(self, guards, ensurePriority=False):
        self.wrapped = pycsp.Alternation(guards, ensurePriority=ensurePriority)
        self.wrapped._set_execute_frame(-2)
        self._set_execute_frame = self.wrapped._set_execute_frame

        process_id = pycsp.current_process_id()
        val = {"type": "Alternation", "guards": [], "process_id": process_id}
        for g_tuple in self.wrapped.guards:
            val["guards"].append(self.__translate(g_tuple[0]))
        sendTrace(val)
예제 #11
0
    def __init__(self, guards, ensurePriority=False):
        self.wrapped = pycsp.Alternation(guards, ensurePriority=ensurePriority)
        self.wrapped._set_execute_frame(-2)
        self._set_execute_frame = self.wrapped._set_execute_frame

        process_id = pycsp.current_process_id()
        val = {'type': 'Alternation', 'guards': [], 'process_id': process_id}
        for g_tuple in self.wrapped.guards:
            val['guards'].append(self.__translate(g_tuple[0]))
        sendTrace(val)
예제 #12
0
파일: trace.py 프로젝트: JohannesEbke/a4
def Spawn(*plist):
    process_id = pycsp.current_process_id()
    val = {'type':'Spawn', 'processes':[], 'process_id':process_id}
    for p in plist:
        if type(p) == type([]):
            for p_2 in p:
                val['processes'].append({'func_name':p_2.fn.func_name, 'process_id':p_2.id})
        else:
            val['processes'].append({'func_name':p.fn.func_name, 'process_id':p.id})
    sendTrace(val)
    pycsp.Spawn(*plist)
예제 #13
0
파일: trace.py 프로젝트: rbrewer123/pycsp
 def __call__(self):
     process_id = pycsp.current_process_id()
     sendTrace(
         {"type": "BlockOnRead", "id": self.count, "chan_name": self.wrapped.channel.name, "process_id": process_id}
     )
     msg = self.wrapped.__call__()
     sendTrace(
         {"type": "DoneRead", "id": self.count, "chan_name": self.wrapped.channel.name, "process_id": process_id}
     )
     self.count += 1
     return msg
예제 #14
0
파일: trace.py 프로젝트: rbrewer123/pycsp
def Spawn(*plist):
    process_id = pycsp.current_process_id()
    val = {"type": "Spawn", "processes": [], "process_id": process_id}
    for p in plist:
        if type(p) == type([]):
            for p_2 in p:
                val["processes"].append({"func_name": p_2.fn.func_name, "process_id": p_2.id})
        else:
            val["processes"].append({"func_name": p.fn.func_name, "process_id": p.id})
    sendTrace(val)
    pycsp.Spawn(*plist)
예제 #15
0
def TraceMsg(s):
    """ TraceMsg(<message>)
    Will add the trace message to the log:
      {'type':'Msg', 'msg':<message>}
    
    """
    sendTrace({
        'type': 'Msg',
        'process_id': pycsp.current_process_id(),
        'msg': str(s)
    })
예제 #16
0
 def execute(self):
     process_id = pycsp.current_process_id()
     sendTrace({
         'type': 'BlockOnAlternation.execute',
         'process_id': process_id
     })
     result = self.wrapped.execute()
     sendTrace({
         'type': 'DoneAlternation.execute',
         'guard': self.__translate(result[0]),
         'process_id': process_id
     })
     return result
예제 #17
0
파일: trace.py 프로젝트: JohannesEbke/a4
def Sequence(*plist):
    process_id = pycsp.current_process_id()
    val = {'processes':[], 'process_id':process_id}
    for p in plist:
        if type(p) == type([]):            
            for p_2 in p:
                val['processes'].append({'func_name':p_2.fn.func_name, 'process_id':p_2.id})
        else:
            val['processes'].append({'func_name':p.fn.func_name, 'process_id':p.id})
    val['type'] = 'BlockOnSequence'
    sendTrace(val)
    pycsp.Sequence(*plist)
    val['type'] = 'DoneSequence'
    sendTrace(val)
예제 #18
0
 def wrapfunc(*wrap_args, **wrap_kwargs):
     process_id = pycsp.current_process_id()
     sendTrace({
         'type': 'StartProcess',
         'func_name': func.func_name,
         'process_id': process_id
     })
     try:
         func(*wrap_args, **wrap_kwargs)
     finally:
         sendTrace({
             'type': 'QuitProcess',
             'func_name': func.func_name,
             'process_id': process_id
         })
예제 #19
0
파일: trace.py 프로젝트: rbrewer123/pycsp
def Sequence(*plist):
    process_id = pycsp.current_process_id()
    val = {"processes": [], "process_id": process_id}
    for p in plist:
        if type(p) == type([]):
            for p_2 in p:
                val["processes"].append({"func_name": p_2.fn.func_name, "process_id": p_2.id})
        else:
            val["processes"].append({"func_name": p.fn.func_name, "process_id": p.id})
    val["type"] = "BlockOnSequence"
    sendTrace(val)
    result = pycsp.Sequence(*plist)
    val["type"] = "DoneSequence"
    sendTrace(val)
    return result
예제 #20
0
 def __call__(self):
     process_id = pycsp.current_process_id()
     sendTrace({
         'type': 'BlockOnRead',
         'id': self.count,
         'chan_name': self.wrapped.channel.name,
         'process_id': process_id
     })
     msg = self.wrapped.__call__()
     sendTrace({
         'type': 'DoneRead',
         'id': self.count,
         'chan_name': self.wrapped.channel.name,
         'process_id': process_id
     })
     self.count += 1
     return msg
예제 #21
0
def Spawn(*plist):
    process_id = pycsp.current_process_id()
    val = {'type': 'Spawn', 'processes': [], 'process_id': process_id}
    for p in plist:
        if type(p) == type([]):
            for p_2 in p:
                val['processes'].append({
                    'func_name': p_2.fn.func_name,
                    'process_id': p_2.id
                })
        else:
            val['processes'].append({
                'func_name': p.fn.func_name,
                'process_id': p.id
            })
    sendTrace(val)
    pycsp.Spawn(*plist)
예제 #22
0
파일: trace.py 프로젝트: JohannesEbke/a4
    def __call__(self, msg):
        process_id = pycsp.current_process_id()
        sendTrace({'type':'BlockOnWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
        self.wrapped.__call__(msg)
        sendTrace({'type':'DoneWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
        
#        try:
#            sendTrace({'type':'BlockOnWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
#            self.wrapped.__call__(msg)
#            sendTrace({'type':'DoneWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
#        except pycsp.ChannelRetireException:
#            sendTrace({'type':'PoisonWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
#            raise pycsp.ChannelRetireException
#        except pycsp.ChannelPoisonException:
#            sendTrace({'type':'RetireWrite', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
#            raise pycsp.ChannelPoisonException

        self.count += 1
예제 #23
0
def Sequence(*plist):
    process_id = pycsp.current_process_id()
    val = {'processes': [], 'process_id': process_id}
    for p in plist:
        if type(p) == type([]):
            for p_2 in p:
                val['processes'].append({
                    'func_name': p_2.fn.func_name,
                    'process_id': p_2.id
                })
        else:
            val['processes'].append({
                'func_name': p.fn.func_name,
                'process_id': p.id
            })
    val['type'] = 'BlockOnSequence'
    sendTrace(val)
    result = pycsp.Sequence(*plist)
    val['type'] = 'DoneSequence'
    sendTrace(val)
    return result
예제 #24
0
파일: trace.py 프로젝트: stjordanis/pycsp
def Parallel(*plist):
    process_id = pycsp.current_process_id()
    val = {'processes': [], 'process_id': process_id}
    for p in plist:
        if type(p) == type([]):
            for p_2 in p:
                val['processes'].append({
                    'func_name': p_2.fn.__name__,
                    'process_id': p_2.id
                })
        else:
            val['processes'].append({
                'func_name': p.fn.__name__,
                'process_id': p.id
            })

    val['type'] = 'BlockOnParallel'
    sendTrace(val)
    result = pycsp.Parallel(*plist)
    val['type'] = 'DoneParallel'
    sendTrace(val)
    return result
예제 #25
0
파일: trace.py 프로젝트: JohannesEbke/a4
 def retire(self): 
     process_id = pycsp.current_process_id()
     sendTrace({'type':'Retire', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
     self.wrapped.retire()       
예제 #26
0
파일: trace.py 프로젝트: rbrewer123/pycsp
 def retire(self):
     process_id = pycsp.current_process_id()
     sendTrace(
         {"type": "Retire", "id": self.count, "chan_name": self.wrapped.channel.name, "process_id": process_id}
     )
     self.wrapped.retire()
예제 #27
0
파일: trace.py 프로젝트: rbrewer123/pycsp
 def poison(self):
     process_id = pycsp.current_process_id()
     sendTrace(
         {"type": "Poison", "id": self.count, "chan_name": self.wrapped.channel.name, "process_id": process_id}
     )
     self.wrapped.poison()
예제 #28
0
파일: trace.py 프로젝트: rbrewer123/pycsp
 def execute(self):
     process_id = pycsp.current_process_id()
     sendTrace({"type": "BlockOnAlternation.execute", "process_id": process_id})
     result = self.wrapped.execute()
     sendTrace({"type": "DoneAlternation.execute", "guard": self.__translate(result[0]), "process_id": process_id})
     return result
예제 #29
0
파일: trace.py 프로젝트: JohannesEbke/a4
 def execute(self):
     process_id = pycsp.current_process_id()
     sendTrace({'type':'BlockOnAlternation.execute', 'process_id':process_id})
     result = self.wrapped.execute()
     sendTrace({'type':'DoneAlternation.execute', 'guard':self.__translate(result[0]), 'process_id':process_id})
     return result
예제 #30
0
파일: trace.py 프로젝트: JohannesEbke/a4
 def poison(self): 
     process_id = pycsp.current_process_id()
     sendTrace({'type':'Poison', 'id':self.count, 'chan_name':self.wrapped.channel.name, 'process_id':process_id})
     self.wrapped.poison()