[Java] XMLRPC och bråk om int-storlek
Jag håller på med ett projekt där jag behöver prata med rTorrent över XMLRPC för att läsa ut information om varje torrent som rTorrent hanterar. Så långt allt väl, kommunikationen är igång osv. men jag har ett problem.
rTorrent markerar resultatet av ett anrop till d.get_size_bytes som en int och skickar ett stort värde (~40 bitar), trots att en int i XMLRPC-specifikationen ska vara 32 bitar.
Jag har provat både Apache's och Redstone's XmlRpcClient implementation, och båda gör så att de hugger av det som så att säga "hamnar utanför" bufferten. Hur kommer jag runt det här? Finns det något sätt att tvinga XmlRpcClient att läsa in en Long t ex? Jag har läst i deras JavaDoc, men kommer ingen vart.
Tacksam för alla uppslag!
Klistrar in lite kod också, så ni förstår vad jag vill göra...
public Torrent getTorrent(String hash) {
try {
Object[] params;
Torrent t = new Torrent();
t.hash = hash;
params = new Object[1];
params[0] = hash;
t.name = (String) client.invoke("d.get_name", params);
t.bytesCompleted = (Integer) client.invoke(
"d.get_completed_bytes", params);
t.size = (Integer) client.invoke("d.get_size_bytes", params);
/* Det här objektet blir en instans av Integer, men jag vill ha en Long */
Object o = client.invoke("d.get_size_bytes", params);
t.downloadRate = (Integer) client
.invoke("d.get_down_rate", params);
t.uploadRate = (Integer) client.invoke("d.get_up_rate", params);
return t;
} catch (XmlRpcFault e) {
return null;
}
}