1 package cz.cuni.amis.pogamut.base.utils.logging;
2
3 import cz.cuni.amis.pogamut.base.agent.IAgentId;
4 import cz.cuni.amis.pogamut.base.agent.impl.AbstractAgent;
5 import cz.cuni.amis.pogamut.base.agent.impl.AgentId;
6 import cz.cuni.amis.pogamut.base.agent.module.IAgentLogic;
7 import cz.cuni.amis.pogamut.base.agent.module.LogicModule;
8 import cz.cuni.amis.pogamut.base.component.bus.ComponentBus;
9 import cz.cuni.amis.pogamut.base.component.bus.IComponentBus;
10 import cz.cuni.amis.pogamut.base.utils.Pogamut;
11 import java.io.EOFException;
12 import java.io.IOException;
13 import java.io.ObjectInputStream;
14 import java.io.ObjectOutputStream;
15 import java.io.StreamCorruptedException;
16 import java.net.InetAddress;
17 import java.net.Socket;
18 import java.net.UnknownHostException;
19 import java.util.concurrent.LinkedBlockingQueue;
20 import java.util.logging.Level;
21 import java.util.logging.Logger;
22
23 public class TestAgents {
24
25 public static class NetworkLoggingAgent extends AbstractAgent {
26
27 public IAgentLogic myLogic = new IAgentLogic() {
28
29 @Override
30 public long getLogicInitializeTime() {
31 return 1000;
32 }
33
34 @Override
35 public long getLogicShutdownTime() {
36 return 1000;
37 }
38
39 @Override
40 public void logic() {
41 NetworkLoggingAgent.this.getLogger().getCategory("my-log").finest("I'm alive! FINEST"+this.toString());
42 NetworkLoggingAgent.this.getLogger().getCategory("my-log").finer("I'm alive! FINER");
43 NetworkLoggingAgent.this.getLogger().getCategory("my-log").fine("I'm alive! FINE");
44 NetworkLoggingAgent.this.getLogger().getCategory("my-log").info("I'm alive! INFO");
45 NetworkLoggingAgent.this.getLogger().getCategory("my-log").warning("I'm alive! WARNING");
46 NetworkLoggingAgent.this.getLogger().getCategory("my-log").severe("I'm alive! SEVERE");
47 try {
48 Thread.sleep(200);
49 } catch (InterruptedException e) {
50 }
51 }
52
53 @Override
54 public void logicInitialize(LogicModule logicModule) {
55 }
56
57 @Override
58 public void logicShutdown() {
59 }
60
61 @Override
62 public void beforeFirstLogic() {
63 }
64
65 };
66
67 LogicModule logic;
68
69 public NetworkLoggingAgent(IAgentId agentId, IComponentBus eventBus, IAgentLogger logger) {
70 super(agentId, eventBus, logger);
71 logger.addDefaultNetworkHandler();
72 logic = new LogicModule(this, myLogic);
73 }
74
75 }
76
77 public static NetworkLoggingAgent createNewAgent() {
78 IAgentId agentId = new AgentId();
79 IAgentLogger agentLogger = new AgentLogger(agentId);
80 agentLogger.setLevel(Level.ALL);
81 IComponentBus bus = new ComponentBus(agentLogger);
82 return new NetworkLoggingAgent(agentId, bus, agentLogger);
83 }
84
85 public static void main(String[] args) {
86
87 NetworkLoggingAgent agent1 = createNewAgent();
88 NetworkLoggingAgent agent2 = createNewAgent();
89 NetworkLoggingAgent agent3 = createNewAgent();
90 NetworkLoggingAgent agent4 = createNewAgent();
91
92 agent1.start();
93 agent2.start();
94 agent3.start();
95 agent4.start();
96
97
98
99 IAgentId agent1Id = agent1.getComponentId();
100 IAgentId agent2Id = agent2.getComponentId();
101 IAgentId agent3Id = agent3.getComponentId();
102 IAgentId agent4Id = agent4.getComponentId();
103
104
105 boolean a1logged=true;
106 boolean a2logged=true;
107 boolean a3logged=true;
108 boolean a4logged=true;
109
110
111 try {
112 Socket cl1 = new Socket(InetAddress.getByName("localhost"), 12345);
113 new ObjectOutputStream(cl1.getOutputStream()).writeObject(agent1Id);
114
115 Socket cl2 = new Socket(InetAddress.getByName("localhost"), 12345);
116 new ObjectOutputStream(cl2.getOutputStream()).writeObject(agent2Id);
117
118 Socket cl3 = new Socket(InetAddress.getByName("localhost"), 12345);
119 new ObjectOutputStream(cl3.getOutputStream()).writeObject(agent3Id);
120
121 Socket cl4 = new Socket(InetAddress.getByName("localhost"), 12345);
122 new ObjectOutputStream(cl4.getOutputStream()).writeObject(agent4Id);
123
124 int i=0;
125 while (true) {
126 try {
127 if(a1logged)
128 for(NetworkLogEnvelope envelope: (LinkedBlockingQueue<NetworkLogEnvelope>)(new ObjectInputStream(cl1.getInputStream()).readObject())){
129 System.out.println("client 1's log: "+envelope.toString());
130 }
131
132 if(a2logged)
133 for(NetworkLogEnvelope envelope: (LinkedBlockingQueue<NetworkLogEnvelope>)(new ObjectInputStream(cl2.getInputStream()).readObject())){
134 System.out.println("client 2's log: "+envelope.toString());
135 }
136
137 if(a3logged)
138 for(NetworkLogEnvelope envelope: (LinkedBlockingQueue<NetworkLogEnvelope>)(new ObjectInputStream(cl3.getInputStream()).readObject())){
139 System.out.println("client 3's log: "+envelope.toString());
140 }
141
142 if(a4logged)
143 for(NetworkLogEnvelope envelope: (LinkedBlockingQueue<NetworkLogEnvelope>)(new ObjectInputStream(cl4.getInputStream()).readObject())){
144 System.out.println("client 4's log: "+envelope.toString());
145 }
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161 } catch (StreamCorruptedException e) {System.out.println(e.toString());break;
162 } catch (ClassNotFoundException e){ System.out.println(e.toString());break;
163 }
164
165 }
166 System.out.println("logging finished");
167
168
169 } catch (UnknownHostException ex) {
170 Logger.getLogger(TestAgents.class.getName()).log(Level.SEVERE, null, ex);
171 } catch (IOException ex) {
172 Logger.getLogger(TestAgents.class.getName()).log(Level.SEVERE, null, ex);
173 }
174
175
176 try {
177 Thread.sleep(5000);
178 } catch (InterruptedException e) {
179 e.printStackTrace();
180 }
181 agent1.kill();
182
183
184
185
186
187 Pogamut.getPlatform().close();
188
189
190 }
191
192 }