Changeset 377


Ignore:
Timestamp:
04/20/2010 06:05:49 PM (10 years ago)
Author:
michael.kriegel
Message:

fatima connector now sends some additional information besides the fatima state to ensure fatima on receiving end registers migration success.

Location:
libs/cmion/cmionMain/src/cmion/level3/fatima
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libs/cmion/cmionMain/src/cmion/level3/fatima/FAtiMAConnector.java

    r376 r377  
    7373         * (because of incoming migration) */ 
    7474        private boolean fatimaStateSet; 
     75         
     76        /** remembers the last action that was sent for execution */ 
     77        private MindAction lastAction; 
     78         
    7579         
    7680        /** create a new FAtiMA connector that connects to an old version of  
     
    149153                if (mindThread!=null) mindThread.send(msg);      
    150154        } 
    151  
     155         
     156         
    152157        @Override 
    153158        protected void processRemoteAction(MindAction remoteAction) { 
     
    267272                                fatimaStateSet = false; 
    268273                                 
    269                                 String state = message.getChildNodes().item(0).getNodeValue(); 
     274                                // read state 
     275                                String state = message.getElementsByTagName("state").item(0).getChildNodes().item(0).getNodeValue(); 
     276                                 
     277                                // read success msg 
     278                                String successMsg = null; 
     279                                if (message.getElementsByTagName("successMsg").getLength()==1)  
     280                                        successMsg = message.getElementsByTagName("successMsg").item(0).getChildNodes().item(0).getNodeValue(); 
    270281                                 
    271282                                // send state to the mind 
     
    282293                                // now that the state is set awake the mind 
    283294                                awakeMind(); 
     295                                 
     296                                // finally, send the received success message to the mind 
     297                                mindThread.send(successMsg); 
    284298                        } 
    285299                         
     
    293307        { 
    294308                Element parent = doc.createElement(getMessageTag()); 
     309                 
    295310                if (canMigrate &&  (mindThread!=null)) 
    296311                {                        
     
    320335                        } 
    321336 
     337                        Element stateElement = doc.createElement("state"); 
    322338                        Node state = doc.createTextNode(currentFatimaState); 
    323                         parent.appendChild(state); 
     339                        stateElement.appendChild(state); 
     340                        parent.appendChild(stateElement); 
     341                         
     342                        // also add information about the current fatima mind action (which initiated 
     343                        // this migration, so that a success message can be sent on the receiving end) 
     344                        if (lastAction!=null) 
     345                        { 
     346                                Element successMsgElement = doc.createElement("successMsg"); 
     347                                String msg = "ACTION-FINISHED " + lastAction.getSubject() + " " 
     348                                +  FAtiMAutils.mindActiontoFatimaMessage(lastAction);    
     349                                Node msgNode = doc.createTextNode(msg); 
     350                                successMsgElement.appendChild(msgNode); 
     351                                parent.appendChild(successMsgElement); 
     352                        } 
    324353                }  
    325354                else 
     
    345374        } 
    346375 
     376        /** executes a new action sent by the mind */ 
     377        public void execute(MindAction mindAction)  
     378        { 
     379                // remember this action 
     380                this.lastAction=mindAction; 
     381                // and send it for execution 
     382                this.newAction(mindAction); 
     383        } 
     384 
    347385 
    348386 
  • libs/cmion/cmionMain/src/cmion/level3/fatima/FAtiMAListenerThread.java

    r376 r377  
    3434import java.util.StringTokenizer; 
    3535 
     36import cmion.level3.MindAction; 
    3637import cmion.storage.WorldModel; 
    3738import cmion.util.SocketListener; 
     
    144145                        connector.notifyGetState(state); 
    145146                } 
    146                 else if (type.equals("STATE-SET")) 
     147                else if (msg.equals("STATE-SET")) 
    147148                { 
    148149                        connector.notifySetState(); 
     
    150151                else { 
    151152                        //Corresponds to an action 
    152                         connector.newAction(FAtiMAutils.fatimaMessageToMindAction(agentName,msg));               
     153                        connector.execute(FAtiMAutils.fatimaMessageToMindAction(agentName,msg)); 
    153154                } 
    154155                 
Note: See TracChangeset for help on using the changeset viewer.