git://git.nikiroo.be
/
fanfix.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
right-click = go back
[fanfix.git]
/
src
/
be
/
nikiroo
/
fanfix
/
library
/
RemoteLibrary.java
diff --git
a/src/be/nikiroo/fanfix/library/RemoteLibrary.java
b/src/be/nikiroo/fanfix/library/RemoteLibrary.java
index a6c68546882c0cdd64bda6c7592976d228bdfb4d..9fa8c66190174bd1a92536b995d181a16bc8744a 100644
(file)
--- a/
src/be/nikiroo/fanfix/library/RemoteLibrary.java
+++ b/
src/be/nikiroo/fanfix/library/RemoteLibrary.java
@@
-21,6
+21,8
@@
import be.nikiroo.utils.serial.server.ConnectActionClientObject;
* This {@link BasicLibrary} will access a remote server to list the available
* stories, and download the ones you try to load to the local directory
* specified in the configuration.
* This {@link BasicLibrary} will access a remote server to list the available
* stories, and download the ones you try to load to the local directory
* specified in the configuration.
+ * <p>
+ * This remote library uses a custom fanfix:// protocol.
*
* @author niki
*/
*
* @author niki
*/
@@
-35,8
+37,8
@@
public class RemoteLibrary extends BasicLibrary {
}
@Override
}
@Override
- public Object send(Object data)
throws IOException,
- NoSuchFieldException, NoSuchMethodException,
+ public Object send(Object data)
+
throws IOException,
NoSuchFieldException, NoSuchMethodException,
ClassNotFoundException {
Object rep = super.send(data);
if (rep instanceof RemoteLibraryException) {
ClassNotFoundException {
Object rep = super.send(data);
if (rep instanceof RemoteLibraryException) {
@@
-78,7
+80,7
@@
public class RemoteLibrary extends BasicLibrary {
* <li><b>wl</b>: flag to allow access to all the stories (bypassing the
* whitelist if it exists)</li>
* </ul>
* <li><b>wl</b>: flag to allow access to all the stories (bypassing the
* whitelist if it exists)</li>
* </ul>
- *
+ *
<p>
* Some examples:
* <ul>
* <li><b>my_key</b>: normal connection, will take the default server
* Some examples:
* <ul>
* <li><b>my_key</b>: normal connection, will take the default server
@@
-113,20
+115,26
@@
public class RemoteLibrary extends BasicLibrary {
this.subkey = "";
}
this.subkey = "";
}
+ if (host.startsWith("fanfix://")) {
+ host = host.substring("fanfix://".length());
+ }
+
this.host = host;
this.port = port;
}
@Override
public String getLibraryName() {
this.host = host;
this.port = port;
}
@Override
public String getLibraryName() {
- return (rw ? "[READ-ONLY] " : "") + host + ":" + port;
+ return (rw ? "[READ-ONLY] " : "") +
"fanfix://" +
host + ":" + port;
}
@Override
public Status getStatus() {
}
@Override
public Status getStatus() {
- Instance.getTraceHandler().trace("Getting remote lib status...");
+ Instance.getInstance().getTraceHandler()
+ .trace("Getting remote lib status...");
Status status = getStatusDo();
Status status = getStatusDo();
- Instance.getTraceHandler().trace("Remote lib status: " + status);
+ Instance.getInstance().getTraceHandler()
+ .trace("Remote lib status: " + status);
return status;
}
return status;
}
@@
-180,8
+188,8
@@
public class RemoteLibrary extends BasicLibrary {
@Override
public void action(ConnectActionClientObject action)
throws Exception {
@Override
public void action(ConnectActionClientObject action)
throws Exception {
- Object rep = action
.send(new Object[] { subkey, "GET_COVER",
- luid });
+ Object rep = action
+
.send(new Object[] { subkey, "GET_COVER",
luid });
result[0] = (Image) rep;
}
});
result[0] = (Image) rep;
}
});
@@
-232,8
+240,8
@@
public class RemoteLibrary extends BasicLibrary {
pg = new Progress();
}
pg = new Progress();
}
- Object rep = action
.send(new Object[] { subkey, "GET_STORY",
- luid });
+ Object rep = action
+
.send(new Object[] { subkey, "GET_STORY",
luid });
MetaData meta = null;
if (rep instanceof MetaData) {
MetaData meta = null;
if (rep instanceof MetaData) {
@@
-352,8
+360,9
@@
public class RemoteLibrary extends BasicLibrary {
@Override
// Could work (more slowly) without it
@Override
// Could work (more slowly) without it
- public
Story
imprt(final URL url, Progress pg) throws IOException {
+ public
MetaData
imprt(final URL url, Progress pg) throws IOException {
// Import the file locally if it is actually a file
// Import the file locally if it is actually a file
+
if (url == null || url.getProtocol().equalsIgnoreCase("file")) {
return super.imprt(url, pg);
}
if (url == null || url.getProtocol().equalsIgnoreCase("file")) {
return super.imprt(url, pg);
}
@@
-364,13
+373,7
@@
public class RemoteLibrary extends BasicLibrary {
pg = new Progress();
}
pg = new Progress();
}
- pg.setMinMax(0, 2);
- Progress pgImprt = new Progress();
- Progress pgGet = new Progress();
- pg.addProgress(pgImprt, 1);
- pg.addProgress(pgGet, 1);
-
- final Progress pgF = pgImprt;
+ final Progress pgF = pg;
final String[] luid = new String[1];
connectRemoteAction(new RemoteAction() {
final String[] luid = new String[1];
connectRemoteAction(new RemoteAction() {
@@
-379,8
+382,8
@@
public class RemoteLibrary extends BasicLibrary {
throws Exception {
Progress pg = pgF;
throws Exception {
Progress pg = pgF;
- Object rep = action.send(
new Object[] { subkey, "IMPORT",
- url.toString() });
+ Object rep = action.send(
+
new Object[] { subkey, "IMPORT",
url.toString() });
while (true) {
if (!RemoteLibraryServer.updateProgress(pg, rep)) {
while (true) {
if (!RemoteLibraryServer.updateProgress(pg, rep)) {
@@
-399,11
+402,8
@@
public class RemoteLibrary extends BasicLibrary {
throw new IOException("Remote failure");
}
throw new IOException("Remote failure");
}
- Story story = getStory(luid[0], pgGet);
- pgGet.done();
-
pg.done();
pg.done();
- return
story
;
+ return
getInfo(luid[0])
;
}
@Override
}
@Override
@@
-434,7
+434,7
@@
public class RemoteLibrary extends BasicLibrary {
}
@Override
}
@Override
- public
synchronized
File getFile(final String luid, Progress pg) {
+ public File getFile(final String luid, Progress pg) {
throw new java.lang.InternalError(
"Operation not supportorted on remote Libraries");
}
throw new java.lang.InternalError(
"Operation not supportorted on remote Libraries");
}
@@
-443,20
+443,23
@@
public class RemoteLibrary extends BasicLibrary {
* Stop the server.
*
* @throws IOException
* Stop the server.
*
* @throws IOException
- * in case of I/O error (including bad key)
+ * in case of I/O errors
+ * @throws SSLException
+ * when the key was not accepted
*/
*/
- public void exit() throws IOException {
+ public void exit() throws IOException
, SSLException
{
connectRemoteAction(new RemoteAction() {
@Override
public void action(ConnectActionClientObject action)
throws Exception {
action.send(new Object[] { subkey, "EXIT" });
connectRemoteAction(new RemoteAction() {
@Override
public void action(ConnectActionClientObject action)
throws Exception {
action.send(new Object[] { subkey, "EXIT" });
+ Thread.sleep(100);
}
});
}
@Override
}
});
}
@Override
- public
synchronized
MetaData getInfo(String luid) throws IOException {
+ public MetaData getInfo(String luid) throws IOException {
List<MetaData> metas = getMetasList(luid, null);
if (!metas.isEmpty()) {
return metas.get(0);
List<MetaData> metas = getMetasList(luid, null);
if (!metas.isEmpty()) {
return metas.get(0);
@@
-529,8
+532,8
@@
public class RemoteLibrary extends BasicLibrary {
pg = new Progress();
}
pg = new Progress();
}
- Object rep = action
.send(new Object[] { subkey, "GET_METADATA",
- luid });
+ Object rep = action
+
.send(new Object[] { subkey, "GET_METADATA",
luid });
while (true) {
if (!RemoteLibraryServer.updateProgress(pg, rep)) {
while (true) {
if (!RemoteLibraryServer.updateProgress(pg, rep)) {
@@
-567,7
+570,7
@@
public class RemoteLibrary extends BasicLibrary {
@Override
protected void onError(Exception e) {
if (!(e instanceof IOException)) {
@Override
protected void onError(Exception e) {
if (!(e instanceof IOException)) {
- Instance.getTraceHandler().error(e);
+ Instance.get
Instance().get
TraceHandler().error(e);
return;
}
return;
}