+ commands.put(id, command);
+ wls.put(id, wl);
+ bls.put(id, bl);
+ rws.put(id, rw);
+ times.put(id, (new Date().getTime() - start));
+
+ return rep;
+ }
+
+ private String display(boolean whitelist, boolean blacklist, boolean rw) {
+ String mode = "";
+ if (!rw) {
+ mode += "RO: ";
+ }
+ if (whitelist) {
+ mode += "WL: ";
+ }
+ if (blacklist) {
+ mode += "BL: ";
+ }
+
+ return mode;
+ }
+
+ @Override
+ protected void onRequestDone(long id, long bytesReceived, long bytesSent) {
+ boolean whitelist = wls.get(id);
+ boolean blacklist = bls.get(id);
+ boolean rw = rws.get(id);
+ wls.remove(id);
+ bls.remove(id);
+ rws.remove(id);
+
+ String rec = StringUtils.formatNumber(bytesReceived) + "b";
+ String sent = StringUtils.formatNumber(bytesSent) + "b";
+ long now = System.currentTimeMillis();
+ System.out.println(StringUtils.fromTime(now) + ": "
+ + String.format("%s[>%s]: (%s sent, %s rec) in %d ms",
+ display(whitelist, blacklist, rw), commands.get(id),
+ sent, rec, times.get(id)));
+
+ commands.remove(id);
+ times.remove(id);
+ }
+
+ private Object doRequest(ConnectActionServerObject action, String command,
+ Object[] args, boolean rw, List<String> whitelist,
+ List<String> blacklist) throws NoSuchFieldException,
+ NoSuchMethodException, ClassNotFoundException, IOException {
+ if ("PING".equals(command)) {
+ return rw ? "r/w" : "r/o";
+ } else if ("GET_METADATA".equals(command)) {
+ List<MetaData> metas = new ArrayList<MetaData>();
+
+ if ("*".equals(args[0])) {
+ Progress pg = createPgForwarder(action);
+
+ for (MetaData meta : Instance.getInstance().getLibrary()
+ .getMetas(pg)) {
+ metas.add(removeCover(meta));
+ }
+
+ forcePgDoneSent(pg);
+ } else {
+ MetaData meta = Instance.getInstance().getLibrary()
+ .getInfo((String) args[0]);
+ MetaData light;
+ if (meta.getCover() == null) {
+ light = meta;
+ } else {
+ light = meta.clone();
+ light.setCover(null);
+ }
+
+ metas.add(light);
+ }
+
+ for (int i = 0; i < metas.size(); i++) {
+ if (!isAllowed(metas.get(i), whitelist, blacklist)) {
+ metas.remove(i);
+ i--;
+ }