Update TamagotchiService.java

This commit is contained in:
Steinwagner 2019-12-11 09:25:27 +01:00
parent 052e7c5793
commit d70c27bb3b

View file

@ -26,9 +26,9 @@ public class TamagotchiService {
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private final PublisherService publisherService; private static final Map<String, Device> deviceRegistry = Collections.synchronizedMap(new HashMap<>());
private final Map<String, Device> deviceRegistry = Collections.synchronizedMap(new HashMap<>()); private final PublisherService publisherService;
@Autowired @Autowired
public TamagotchiService(PublisherService publisherService) { public TamagotchiService(PublisherService publisherService) {
@ -54,8 +54,9 @@ public class TamagotchiService {
public void takeCare(String deviceId, Care care) { public void takeCare(String deviceId, Care care) {
Device device = deviceRegistry.get(deviceId); Device device = deviceRegistry.get(deviceId);
if (device == null) if (device == null) {
return; return;
}
device.changeHealthScore(care.getFeed()); device.changeHealthScore(care.getFeed());
device.changeHealthScore(care.getPet()); device.changeHealthScore(care.getPet());
} }
@ -69,12 +70,19 @@ public class TamagotchiService {
.forEach(device -> { .forEach(device -> {
while (device.getMessages().peek() != null) { while (device.getMessages().peek() != null) {
try { try {
publisherService.publish(device.getMessages().peek()); publisherService.publish(device.getMessages().poll());
device.getMessages().poll();
} catch (Exception ex) { } catch (Exception ex) {
LOGGER.error("processing device events failed: {}", ex.getMessage()); LOGGER.error("processing device events failed: {}", ex.getMessage());
} }
} }
}); });
// remove dead devices
deviceRegistry
.values()
.parallelStream()
.filter(device -> !device.isAlive())
.forEach(device -> deviceRegistry.remove(device.getId()));
} }
} }