Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: alice/tucson/ide/InspectorCore.java


1   package alice.tucson.ide;
2   import java.io.*;
3   import alice.tucson.*;
4   import alice.tuplemedium.*;
5   import alice.tuplemedium.runtime.*;
6   import alice.logictuple.LogicTuple;
7   
8   public class InspectorCore extends alice.tuplemedium.runtime.Inspector {
9   
10      InspectorAgent form;
11  
12      boolean             loggingTuples=false;
13      String              logTupleFilename;
14      FileWriter          logTupleWriter;
15      LogicTuple          logTupleFilter;
16  
17      boolean             loggingQueries=false;
18      String              logQueryFilename;
19      FileWriter          logQueryWriter;
20      //LogicTuple        logQueryFilter;
21  
22      boolean             loggingReactions=false;
23      String              logReactionFilename;
24      FileWriter          logReactionWriter;
25      //LogicTuple        logQueryFilter;
26  
27      public InspectorCore(InspectorAgent f,alice.tucson.AgentId id_,alice.tucson.TupleCentreId tid_) throws Exception {
28          super(id_,tid_);
29          setDaemonPort(alice.infrastructure.Tucson.DEFAULT_PORT);
30          form=f;
31          logTupleFilename="inspector-tuples.log";
32          logQueryFilename="inspector-queries.log";
33          logReactionFilename="inspector-reactions.log";
34          try {
35              logTupleWriter=new FileWriter(logTupleFilename,true);
36              logQueryWriter=new FileWriter(logQueryFilename,true);
37              logReactionWriter=new FileWriter(logReactionFilename,true);
38          } catch (Exception ex){
39          }
40      }
41  
42      public void onVMEvent(InspectorMsg msg){
43          if (msg.tuples!=null){
44              TupleViewer viewer=form.getTupleForm();
45              viewer.setVMTime(msg.vmTime);
46              msg.localTime=System.currentTimeMillis();
47              viewer.setLocalTime(msg.localTime);
48              viewer.setNItems(msg.nTuplesMatchingFilter);
49              String st="";
50              for (int i=0; i<msg.nTuplesMatchingFilter; i++){
51                  st=st+msg.tuples[i].toString()+"\n";
52              }
53              viewer.setText(st);
54              if (loggingTuples){
55                  try {
56                      st="";
57                      logTupleWriter.write("snapshot( \n"+
58                                           "    time_vm("+msg.vmTime+"),\n"+
59                                           "    time_local("+msg.localTime+"),\n"+
60                                           "    tuple_filter("+form.protocol.tsetFilter+"),\n"+
61                                           "    tuple_log_filter("+logTupleFilter+"),\n"+
62                                           "    tuple_list([ \n");
63  
64                      if (logTupleFilter==null){
65                          boolean first=true;
66                          for (int i=0; i<msg.nTuplesMatchingFilter; i++){
67                              if (first){
68                                  st=st+"        "+msg.tuples[i].toString();
69                                  first=false;
70                              } else {
71                                  st=st+",\n        "+msg.tuples[i].toString();
72                              }
73                          }
74                      } else {
75                          boolean first=true;
76                          for (int i=0; i<msg.nTuplesMatchingFilter; i++){
77                              if (first){
78                                  st=st+"        "+msg.tuples[i].toString();
79                                  first=false;
80                              } else {
81                                  st=st+",\n        "+msg.tuples[i].toString();
82                              }
83                          }
84                      }
85                      logTupleWriter.write(st+"])).\n");
86                      logTupleWriter.flush();
87                  } catch (Exception ex){
88                  }
89              }
90          }
91          if (msg.wnEvents!=null){
92              EventViewer viewer=form.getQueryForm();
93              msg.localTime=System.currentTimeMillis();
94              viewer.setVMTime(msg.vmTime);
95              viewer.setLocalTime(msg.localTime);
96              viewer.setNItems(msg.wnEvents.length);
97              String st="";
98              for (int i=0; i<msg.wnEvents.length; i++){
99                  Event ev=msg.wnEvents[i];
100                 String tupleEvent="query(";
101                 if (ev.operation.toString().equals("in_1")){
102                     tupleEvent+="in(";
103                 } else {
104                     tupleEvent+="rd(";
105                 }
106                 if (ev.tuple!=null){
107                     tupleEvent+=ev.tuple+"),agent-id("+ev.idAgent+"))";
108                 } else {
109                     tupleEvent+=ev.template+"),agent-id("+ev.idAgent+"))";
110                 }
111                 st=st+tupleEvent+"\n";
112             }
113             viewer.setText(st);
114             if (loggingQueries){
115                 try {
116                     st="";
117                     logQueryWriter.write("snapshot( \n"+
118                                          "    time_vm("+msg.vmTime+"),\n"+
119                                          "    time_local("+msg.localTime+"),\n"+
120                                          //"    query_filter("+form.protocol.queryFilter+"),\n"+
121                                          //"    query_log_filter("+logQueryFilter+"),\n"+
122                                          "    query_list([ \n");
123 
124                     //if (logQueryFilter==null){
125                         boolean first=true;
126                         for (int i=0; i<msg.wnEvents.length; i++){
127                             Event ev=msg.wnEvents[i];
128                             if (first){
129                                 st=st+"        "+"query( id("+ev.id+"), op("+ev.operation+"),  tuple("+ev.tuple+"), agent("+ev.idAgent+"))";
130                                 first=false;
131                             } else {
132                                 st=st+",\n        "+"query( id("+ev.id+"), op("+ev.operation+"),  tuple("+ev.tuple+"), agent("+ev.idAgent+"))";
133                             }
134                         }
135                     /*
136                     } else {
137                         for (int i=0; i<msg.nTuplesMatchingFilter; i++){
138                             if (msg.tuples[i].match(logTupleFilter))
139                                 st=st+"        "+msg.tuples[i].toString()+",\n";
140                         }
141                     }
142                     */
143                     logQueryWriter.write(st+"])).\n");
144                     logQueryWriter.flush();
145                 } catch (Exception ex){
146                 }
147             }
148         }
149 
150         if (msg.reactionOk!=null){
151             ReactionViewer viewer=form.getReactionForm();
152             TriggeredReaction tr=msg.reactionOk;
153             viewer.appendText("time: "+msg.vmTime+"\n"+tr.reaction+" OK\n");
154             if (loggingReactions){
155                 try {
156                     logReactionWriter.write("succeed-reaction( time("+msg.vmTime+"), "+tr.reaction+").\n");
157                 } catch (Exception ex){
158                 }
159             }
160 
161         } else if (msg.reactionFailed!=null){
162             ReactionViewer viewer=form.getReactionForm();
163             TriggeredReaction tr=msg.reactionFailed;
164             viewer.appendText("time: "+msg.vmTime+"\n"+tr.reaction+" FAILED\n");
165             if (loggingReactions){
166                 try {
167                     logReactionWriter.write("failed-reaction( time("+msg.vmTime+"), "+tr.reaction+").\n");
168                 } catch (Exception ex){
169                 }
170             }
171         }
172     }
173 
174     void changeLogTupleFile(String name){
175         logTupleFilename=name;
176         if (logTupleWriter!=null){
177             try {
178                 logTupleWriter.close();
179             } catch (Exception ex){
180             }
181         }
182         try {
183             logTupleWriter=new FileWriter(logTupleFilename,true);
184         } catch (Exception ex){
185         }
186     }
187 
188     void changeLogQueryFile(String name){
189         logQueryFilename=name;
190         if (logQueryWriter!=null){
191             try {
192                 logQueryWriter.close();
193             } catch (Exception ex){
194             }
195         }
196         try {
197             logQueryWriter=new FileWriter(logQueryFilename,true);
198         } catch (Exception ex){
199         }
200     }
201 
202     void changeLogReactionFile(String name){
203         logReactionFilename=name;
204         if (logReactionWriter!=null){
205             try {
206                 logReactionWriter.close();
207             } catch (Exception ex){
208             }
209         }
210         try {
211             logReactionWriter=new FileWriter(logReactionFilename,true);
212         } catch (Exception ex){
213         }
214     }
215 }