* Note: the key we use here is the encryption key (it must not contain a
* subkey).
*
- * @param key
- * the key that will restrict access to this server
- * @param port
- * the port to listen on
- *
* @throws IOException
* in case of I/O error
*/
- public RemoteLibraryServer(String key, int port) throws IOException {
- super("Fanfix remote library", port, key);
+ public RemoteLibraryServer() throws IOException {
+ super("Fanfix remote library",
+ Instance.getInstance().getConfig()
+ .getInteger(Config.SERVER_PORT),
+ Instance.getInstance().getConfig()
+ .getString(Config.SERVER_KEY));
+
setTraceHandler(Instance.getInstance().getTraceHandler());
}
* @return TRUE if it was a progress event, FALSE if not
*/
static boolean updateProgress(Progress pg, Object rep) {
- if (rep instanceof Object[]) {
+ boolean updateProgress = false;
+ if (rep instanceof Integer[] && ((Integer[]) rep).length == 3)
+ updateProgress = true;
+ if (rep instanceof Object[] && ((Object[]) rep).length >= 5
+ && "UPDATE".equals(((Object[]) rep)[0]))
+ updateProgress = true;
+
+ if (updateProgress) {
Object[] a = (Object[]) rep;
- if (a.length >= 3) {
- int min = (Integer)a[0];
- int max = (Integer)a[1];
- int progress = (Integer)a[2];
-
- if (min >= 0 && min <= max) {
- pg.setMinMax(min, max);
- pg.setProgress(progress);
- if (a.length >= 4) {
- pg.put("meta", a[3]);
- }
- return true;
+ int offset = 0;
+ if (a[0] instanceof String) {
+ offset = 1;
+ }
+
+ int min = (Integer) a[0 + offset];
+ int max = (Integer) a[1 + offset];
+ int progress = (Integer) a[2 + offset];
+
+ Object meta = null;
+ if (a.length > (3 + offset)) {
+ meta = a[3 + offset];
+ }
+
+ String name = null;
+ if (a.length > (4 + offset)) {
+ name = a[4 + offset] == null ? "" : a[4 + offset].toString();
+ }
+
+
+ if (min >= 0 && min <= max) {
+ pg.setName(name);
+ pg.setMinMax(min, max);
+ pg.setProgress(progress);
+ if (meta != null) {
+ pg.put("meta", meta);
}
+
+ return true;
}
}
final Integer[] p = new Integer[] { -1, -1, -1 };
final Object[] pMeta = new MetaData[1];
+ final String[] pName = new String[1];
final Long[] lastTime = new Long[] { new Date().getTime() };
pg.addProgressListener(new ProgressListener() {
@Override
// Do not re-send the same value twice over the wire,
// unless more than 2 seconds have elapsed (to maintain the
// connection)
- if (!samePg || !same(pMeta[0], meta) //
+ if (!samePg || !same(pMeta[0], meta)
+ || !same(pName[0], name) //
|| (new Date().getTime() - lastTime[0] > 2000)) {
p[0] = min;
p[1] = max;
p[2] = rel;
pMeta[0] = meta;
+ pName[0] = name;
try {
- action.send(new Object[] { min, max, rel, meta });
+ action.send(new Object[] { "UPDATE", min, max, rel,
+ meta, name });
action.rec();
} catch (Exception e) {
getTraceHandler().error(e);
}
private MetaData removeCover(MetaData meta) {
- MetaData light;
- if (meta.getCover() == null) {
- light = meta;
- } else {
- light = meta.clone();
- light.setCover(null);
+ MetaData light = null;
+ if (meta != null) {
+ if (meta.getCover() == null) {
+ light = meta;
+ } else {
+ light = meta.clone();
+ light.setCover(null);
+ }
}
return light;