Changeset 364


Ignore:
Timestamp:
04/15/2010 03:13:37 PM (11 years ago)
Author:
michael.kriegel
Message:

added sending and receiving serialized agent state via socket connection, still needs to be tested

Location:
AgentMind/trunk/AgentMind
Files:
6 added
3 edited

Legend:

Unmodified
Added
Removed
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Agent.java

    r325 r364  
    33import java.io.File; 
    44 
     5import java.io.ByteArrayInputStream; 
     6import java.io.ByteArrayOutputStream; 
    57import java.io.FileInputStream; 
    68import java.io.FileOutputStream; 
     
    1517import java.util.StringTokenizer; 
    1618import java.util.logging.Logger; 
     19 
    1720 
    1821 
     
    6063import FAtiMA.util.enumerables.EventType; 
    6164import FAtiMA.util.parsers.AgentLoaderHandler; 
     65import FAtiMA.util.parsers.BinaryStringConverter; 
    6266import FAtiMA.util.parsers.CultureLoaderHandler; 
    6367import FAtiMA.wellFormedNames.Name; 
     
    10491053        } 
    10501054 
     1055        /** returns a String that contains the serialized internal state of the agent 
     1056         *  in a String format*/ 
     1057        public String getSerializedState()  
     1058        { 
     1059                try 
     1060                { 
     1061                 
     1062                        ByteArrayOutputStream b = new ByteArrayOutputStream();           
     1063                        ObjectOutputStream s = new ObjectOutputStream(b); 
     1064 
     1065                        s.writeObject(_ToM); 
     1066                        //s.writeObject(_nearbyAgents); 
     1067                        s.writeObject(_deliberativeLayer); 
     1068                        s.writeObject(_reactiveLayer); 
     1069                        s.writeObject(_emotionalState); 
     1070                        s.writeObject(_memory); 
     1071                        s.writeObject(_motivationalState); 
     1072                        s.writeObject(_dialogManager); 
     1073                        //s.writeObject(_role); 
     1074                        //s.writeObject(_name); 
     1075                        //s.writeObject(_sex); 
     1076                        s.writeObject(_speechAct); 
     1077                        s.writeObject(new Short(_currentEmotion)); 
     1078                        s.writeObject(_displayName); 
     1079                        //s.writeObject(new Boolean(_showStateWindow)); 
     1080                        s.writeObject(_actionsForExecution); 
     1081                        s.writeObject(_perceivedEvents); 
     1082                        //s.writeObject(_saveDirectory); 
     1083                        s.flush(); 
     1084                        s.close(); 
     1085                        return BinaryStringConverter.encodeBinaryToString(b.toByteArray()); 
     1086                } 
     1087                catch (Exception e) 
     1088                { 
     1089                        e.printStackTrace(); 
     1090                } 
     1091                return null; 
     1092        } 
     1093 
     1094        /** sets the internal state of the agent to the state which is contained 
     1095         *  in the passed string */ 
     1096        public void setSerializedState(String state)  
     1097        { 
     1098                try 
     1099                { 
     1100                        ByteArrayInputStream in = new ByteArrayInputStream( 
     1101                                BinaryStringConverter.decodeStringToBinary(state)); 
     1102                 
     1103                        ObjectInputStream s = new ObjectInputStream(in); 
     1104                        this._ToM = (HashMap<String, ModelOfOther>) s.readObject(); 
     1105                        //this._nearbyAgents = (ArrayList<String>) s.readObject(); 
     1106                        this._deliberativeLayer = (DeliberativeProcess) s.readObject(); 
     1107                        this._reactiveLayer = (ReactiveProcess) s.readObject(); 
     1108                        this._emotionalState = (EmotionalState) s.readObject(); 
     1109                        this._memory = (Memory) s.readObject(); 
     1110                        this._motivationalState = (MotivationalState) s.readObject(); 
     1111                        this._dialogManager = (DialogManager) s.readObject(); 
     1112                        //this._role = (String) s.readObject(); 
     1113                        //this._name = (String) s.readObject(); 
     1114                        //this._sex = (String) s.readObject(); 
     1115                        this._speechAct = (SpeechAct) s.readObject(); 
     1116                        this._currentEmotion = ((Short) s.readObject()).shortValue(); 
     1117                        this._displayName = (String) s.readObject(); 
     1118                        //this._showStateWindow = ((Boolean) s.readObject()).booleanValue(); 
     1119                        this._actionsForExecution = (ArrayList<ValuedAction>) s.readObject(); 
     1120                        this._perceivedEvents = (ArrayList<Event>) s.readObject(); 
     1121                        //this._saveDirectory = (String) s.readObject(); 
     1122                } 
     1123                catch (Exception e) 
     1124                { 
     1125                        e.printStackTrace(); 
     1126                } 
     1127        } 
     1128 
    10511129 
    10521130} 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/sensorEffector/RemoteAgent.java

    r326 r364  
    134134        protected static final String SA_MEMORY = "SA-MEMORY"; 
    135135        protected static final String CC_MEMORY = "CC-MEMORY"; 
     136        protected static final String GET_STATE = "GET-STATE"; 
     137        protected static final String SET_STATE = "SET-STATE"; 
    136138         
    137139        protected ArrayList<ValuedAction> _actions; 
     
    781783                        this.Send(output); 
    782784                } 
    783         } 
     785                else if(action.startsWith(GET_STATE)) 
     786                { 
     787                        // the connected world simulation has requested for the agent to serialize its current 
     788                        // state and send it over 
     789                        String output = "STATE " +_agent.getSerializedState(); 
     790                        this.Send(output); 
     791                } 
     792                else if(action.startsWith(SET_STATE)) 
     793                { 
     794                        // parse state from message 
     795                        StringTokenizer st = new StringTokenizer(perc, " "); 
     796                        st.nextToken(); 
     797                        String state = st.nextToken();                   
     798                        _agent.setSerializedState(state);                        
     799                } 
     800} 
    784801         
    785802        protected void AddGoalsPerception(String perc) 
  • AgentMind/trunk/AgentMind/data/characters/minds/LIRECScenarios.xml

    r327 r364  
    104104                </Agent> 
    105105                 
     106        </Scenario> 
     107         
     108        <Scenario name="ArchitectureTest"> 
     109                <WorldSimulator port="46874" scenery="TestLocation" actionsFile="data/characters/minds/TestActions.xml"  
     110                                                agentLanguageFile="data/characters/minds/language/agent/en/language-set-1"  
     111                                                userOptionsFile="TestOptions">           
     112                <Objects> 
     113                </Objects> 
     114                         
     115                </WorldSimulator>        
     116                <Agent name="SpiritOfTheBuilding" displayName="Spirit" role="TestAgent" platform="worldsim" host="localhost"  
     117                           port="46874" displayMode="True" sex="F" actionsFile="TestActions"  
     118                           goalsFile="TestGoals" cultureName="NoCultureTest"> 
     119                        <Properties>                             
     120                                <Property name="isTestMind" value="True"/> 
     121                                <Property name="location" value="TestLocation"/>                                         
     122                        </Properties>    
     123                </Agent> 
    106124        </Scenario>      
    107125</Scenarios> 
Note: See TracChangeset for help on using the changeset viewer.