+ Object rep = doRequest(action, command, args);
+
+ commands.put(id, command);
+ times.put(id, (new Date().getTime() - start));
+
+ return rep;
+ }
+
+ @Override
+ protected void onRequestDone(long id, long bytesReceived, long bytesSent) {
+ String rec = StringUtils.formatNumber(bytesReceived) + "b";
+ String sent = StringUtils.formatNumber(bytesSent) + "b";
+ System.out.println(String.format("[>%s]: (%s sent, %s rec) in %d ms",
+ commands.get(id), sent, rec, times.get(id)));
+ commands.remove(id);
+ times.remove(id);
+ }
+
+ private Object doRequest(ConnectActionServerObject action, String command,
+ Object[] args) throws NoSuchFieldException, NoSuchMethodException,
+ ClassNotFoundException, IOException {
+ if ("PING".equals(command)) {
+ return "PONG";
+ } else if ("GET_METADATA".equals(command)) {
+ if ("*".equals(args[0])) {
+ Progress pg = createPgForwarder(action);
+
+ List<MetaData> metas = new ArrayList<MetaData>();
+
+ for (MetaData meta : Instance.getLibrary().getMetas(pg)) {
+ MetaData light;
+ if (meta.getCover() == null) {
+ light = meta;
+ } else {
+ light = meta.clone();
+ light.setCover(null);
+ }