package org.kvj.lima1.pg.sync.data;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ChannelStorage {
private static Logger log = LoggerFactory.getLogger(ChannelStorage.class);
private static class ChannelInfo {
String userName = null;
String token = null;
String channel = null;
String app = null;
}
private static final Map<String, ChannelInfo> channels = new HashMap<String, ChannelInfo>();
public static void newChannel(String app, String token, String userName,
String channel) {
ChannelInfo info = new ChannelInfo();
info.userName = userName;
info.token = token;
info.channel = channel;
info.app = app;
synchronized (channels) {
channels.put(token, info);
}
}
public static void dataUpdated(String app, String user, String token) {
synchronized (channels) {
// log.info("Data updated: " + app + ", " + user + ", "
// + channels.size());
List<String> removes = new ArrayList<String>();
for (String t : channels.keySet()) {
ChannelInfo info = channels.get(t);
// log.info("Check token: " + info.app + ", " + info.userName
// + ", " + info.token + " = " + token);
if (app.equals(info.app) && user.equals(info.userName)
&& !info.token.equals(token)) {
// Our case - notify
try {
// log.info("Found socket - send");
} catch (Exception e) {
log.warn("Token expired", e);
removes.add(t);
}
}
}
for (String t : removes) {
channels.remove(t);
}
}
}
}