Package abstrasy

Examples of abstrasy.InterpreterSemaphore


         */
        startAt.isGoodArgsCnt(4);
        String target = startAt.getSubNode(3, Node.TYPE_STRING).getString();
        startAt.requirePCode(2, PCoder.PC_TO);
        Node msg = startAt.getSubNode(1, Node.VTYPE_VALUABLE);
        InterpreterSemaphore sema = Interpreter.getSemaphore();
        Interpreter amie = sema.getThread(target);
        if (amie != null) {
            /**
             * un acteur peut s'envoyer un message à lui-même...
             *
             */
            sema.send_MSG(amie, msg);
        }
        else {
            throw new InterpreterException(StdErrors.extend(StdErrors.Actor_not_found, target));
        }
        return null;
View Full Code Here



        Node res = null;
        Interpreter myself = Interpreter.mySelf();
        StaticHeap global = myself.getGLOBAL();
        InterpreterSemaphore sema = Interpreter.getSemaphore();

        Exception reportExcep = null;


        /*
         * l'acteur est-il déjà verrouillé ?
         */
        boolean dejaLock = myself.actor_ISMUTEX();

        /*
         * Adapter en fonction du verrouillage...
         */
        if (dejaLock) {
            // sema déjà verrouillé
            myself.actor_LOCKMUTEX();
        }
        else {
            sema.lockMutex();
            // inclu actor_LOCK();
        }


        /*
         * Nouveau contexte...
         */
        global.push();
       
        try {
            res = xnode.exec(true);
        }
        catch (Exception e) {
            reportExcep = e;
        }

        /*
         * restaurer le contexte
         */
        global.pull();
       
       
        /*
         * adapter en fonction du verrouillage...
         */
        if (dejaLock) {
            // sema de doit pas encore être déverrouillé...
            myself.actor_UNLOCKMUTEX();
        }
        else {
            sema.unlockMutex();
            // inclu actor_UNLOCK();
        }


        /*
 
View Full Code Here

   */
  public Node eval(Node startAt) throws Exception {
    startAt.isGoodArgsCnt(2);
    String target = startAt.getSubNode(1, Node.TYPE_STRING).getString();
    Interpreter myself = Interpreter.mySelf();
    InterpreterSemaphore sema = Interpreter.getSemaphore();
    Interpreter amie = sema.getThread(target);
    if (amie == myself) {
      throw new InterpreterException(StdErrors.An_actor_can_not_resume_himself);
    }
    if (amie != null) {
      sema.resume(amie);
    }
    else{
      throw new InterpreterException(StdErrors.extend(StdErrors.Actor_not_found,target));
    }

View Full Code Here

     */
    public Node eval(Node startAt) throws Exception {
        startAt.isGoodArgsCnt(2);
        String target = startAt.getSubNode(1, Node.TYPE_STRING).getString();
        Interpreter myself = Interpreter.mySelf();
        InterpreterSemaphore sema = Interpreter.getSemaphore();
        Interpreter amie = sema.getThread(target);
        if (amie == null) {
            throw new InterpreterException(StdErrors.extend(StdErrors.Actor_not_found, target));
        }
        else {
            return new Node(amie.isThreadSuspended() ? Node.TRUE: Node.FALSE);
View Full Code Here

        Node res = null;

        Interpreter myself = Interpreter.mySelf();

        StaticHeap global = myself.getGLOBAL();
        InterpreterSemaphore sema = Interpreter.getSemaphore();

        Exception reportExcep = null;

        /*
         * Si les nodes sont déjà verrrouillés par moi-même, on ignore le verrouillage...
         */
        for(int i=0;i<vnodes.length;i++){
            vnodes[i].lockLock();
        }
       

       /*
        * Nouveau contexte...
        */
        global.push();
       
        // Entrée dans la section verrouillée réussie...
        myself.actor_LOCKSECTION();
       
        try {
            res = xnode.exec(true);
        }
        catch (Exception e) {
            reportExcep = e;
        }

        //Sortie de la section verroui
        myself.actor_UNLOCKSECTION();
       
        /*
         * restaurer le contexte
         */
        global.pull();


        /*
         * Si les nodes étaient déjà verrouillés par moi-même avant, je ne déverrouille
         * pas ici...
         *
         * S'il y a une exception et/ou que j'avais verrouillé ici, je déverrouille
         * maintenant... Equivalent de fin
         *
         * Remarque:
         * --------
         *    Si on déverrouille dans le même ordre qu'on à verrouillé, on obtient
         *    une libération dans un ordre permettant le re-verrouillage dans
         *    l'ordre chronologique des déverrouillage:
         *   
         *    T1: x <----------------->
         *        y    <----------------->
         *       
         *    T2  x                     <---------------->
         *        y                        <---------------->
         *   
         *    Verrouillages et déverrouillage peuvent ainsi se chevaucher.
         *   
         */
        for(int i=0;i<vnodes.length;i++){
                sema.unlockNode(vnodes[i]);
        }

        /*
         * reporter l'exception s'il y en a une...
         */
 
View Full Code Here

    }

    private void kill_target(String target) throws Exception{

        Interpreter myself = Interpreter.mySelf();
        InterpreterSemaphore sema = Interpreter.getSemaphore();
        Interpreter amie = sema.getThread(target);

        if (amie == myself) {
            throw new InterpreterException(StdErrors.An_actor_can_not_kill_himself);
        }

        if (amie != null) {
            if (!amie.isInterThread()) {
                throw new InterpreterException(StdErrors.An_actor_can_not_kill_supervisor);
            }
            sema.kill(amie);
        }
        /*
         * Correctif: rev6261 du 21/02/2011:
         *
         * Ne plus envoyer d'exception en cas où l'acteur serait déjà supprimé.
View Full Code Here

TOP

Related Classes of abstrasy.InterpreterSemaphore

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.