/* (non-Javadoc) * @see madkit.netcomm.MadkitNetworkAgent#handleNetworkMessage(madkit.netcomm.NetworkMessage) */ protected void handleNetworkMessage(NetworkMessage message) { switch (message.getType()) { case NetworkMessage.SYNCH_REQUEST: debug("handling NetworkMessage.SYNCH_REQUEST"); Vector vec = (Vector) message.getArgument(); handleSynchRequest(message.getSender(), vec); break; case NetworkMessage.ROUTE_MESSAGE: debug("Routing message"); sendDistantMessage((KernelMessage) message.getArgument()); break; case NetworkMessage.CONNECT_KERNEL: debug("CONNECT_KERNEL received"); Vector v1 = (Vector) message.getArgument(); Socket brSocket = (Socket) v1.get(0); KernelAddress id = (KernelAddress) v1.get(1); // check if the kernel is known SocketKernel distantSK = (SocketKernel) v1.get(2); if (id != null && routeTable.containsKey(id)) { debug("broadcast from known kernel"); try { brSocket.close(); } catch (IOException e) { debug(e.toString()); } break; } launchNetConfigConnection(distantSK, brSocket, id); break; case NetworkMessage.KERNEL_DISCONNECTED: routeTable.remove(((KernelAddress) message.getArgument()).getID()); break; case NetworkMessage.UPDATE_ROUTE: debug("UPDATE_ROUTE"); Vector v = (Vector) message.getArgument(); KernelAddress addr = (KernelAddress) v.get(0); AgentAddress p2p = (AgentAddress) v.get(1); DistantKernelInformation info = (DistantKernelInformation) routeTable.remove(addr.getID()); info.setP2PAgent(p2p); info.setProtocol((String) v.get(2)); routeTable.put(addr.getID(), info); sendMessage( getAgentWithRole(community, group, "netagent"), new NetworkMessage(NetworkMessage.UPDATE_ROUTE, v)); sendMessage( message.getSender(), new NetworkMessage(NetworkMessage.UPDATE_ROUTE_DONE, addr)); break; default: debug("unknown NetworkMessage Received"); debug(message.toString()); break; } }