@Override public void register() { List<Class<? extends IEvent>> events = new ArrayList<Class<? extends IEvent>>(); events.add(MessageReceivedEvent.class); events.add(WiFiInfoCollectedEvent.class); events.add(SendBroadcastMessageEvent.class); events.add(SendUnicastMessageEvent.class); events.add(UpdateStatusEvent.class); EventDispatcher.getInstance().registerComponent(this, events); }
/** * Setter method for the map. If current device is the GroupOwner, it sends back to all the * devices requestConnectionSent to his group the complete map of all the peers * * @param map */ public synchronized void setPeersIdIPmap(Map<String, String> map) { // If setup was already completed, just do nothing if (setupCompleted) { return; } if (peerIdIpMap == null) { peerIdIpMap = map; } else { peerIdIpMap.putAll(map); } if (peerIdIpMap.containsKey(MAC_ADDRESS)) peerIdIpMap.remove(MAC_ADDRESS); // If I'm the group owner and I haven't sent the map to all yet and the map is complete (all // peers sent me their ID) // Broadcast the map to all, after adding my <ID,IP> to it! Map<String, String> mapToBroadcast = null; if (isGroupOwner) { if (!mapSent && peerIdIpMap.keySet().size() >= peers.size()) { setupCompleted = true; EventDispatcher.getInstance() .triggerEvent(new SetupProviderEvent(0, peerIdIpMap.size() + 1)); EventDispatcher.getInstance().triggerEvent(new UpdateLocationEvent()); mapToBroadcast = new HashMap<String, String>(peerIdIpMap); mapToBroadcast.put(MAC_ADDRESS, groupOwnerAddress); IMessage message = createMapMessage(mapToBroadcast, IPaketSender.BROADCAST_ADDRESS); logger.d("Invio la mappa a tutti : "); sendBroadcast(message); mapSent = true; // Now start simulation EventDispatcher.getInstance().triggerEvent(new SetupCompletedEvent()); EventDispatcher.getInstance() .triggerEvent(new UpdateStatusEvent("Group owner setup completed")); } } else { // If I'm not the group owner and I'm here, I received the map, // so I can start simulation setupCompleted = true; EventDispatcher.getInstance().triggerEvent(new UpdateLocationEvent()); EventDispatcher.getInstance().triggerEvent(new SetupCompletedEvent()); EventDispatcher.getInstance().triggerEvent(new UpdateStatusEvent("Peer Setup completed")); } if (mapToBroadcast == null) mapToBroadcast = peerIdIpMap; String s = "Current MAP:\n"; for (String k : mapToBroadcast.keySet()) { s += k + " " + mapToBroadcast.get(k) + "\n"; } logger.d("Message received\n" + s); }