Exemplo n.º 1
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})
Exemplo n.º 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
Exemplo n.º 3
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)})
Exemplo n.º 4
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)})
Exemplo n.º 5
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
Exemplo n.º 6
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})
Exemplo n.º 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()
Exemplo n.º 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()
Exemplo n.º 9
0
    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)
Exemplo n.º 10
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)
Exemplo n.º 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)
Exemplo n.º 12
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)
Exemplo n.º 13
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
Exemplo n.º 14
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)
Exemplo n.º 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)
    })
Exemplo n.º 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
Exemplo n.º 17
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)
    pycsp.Sequence(*plist)
    val['type'] = 'DoneSequence'
    sendTrace(val)
Exemplo n.º 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
         })
Exemplo n.º 19
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
Exemplo n.º 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
Exemplo n.º 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)
Exemplo n.º 22
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
Exemplo n.º 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
Exemplo n.º 24
0
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
Exemplo n.º 25
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()       
Exemplo n.º 26
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()
Exemplo n.º 27
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()
Exemplo n.º 28
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
Exemplo n.º 29
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
Exemplo n.º 30
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()