[Java] XMLRPC och bråk om int-storlek

Permalänk

[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; } }

Permalänk
Medlem

Kan du inte parsa om returvärdet till en long istället för en int? Vad för objekt returnerar metoden invoke?

Permalänk

Nej det är det som är problemet. invoke() returnerar ett Object vid kompilering men vid körning sen så är det alltid instansierat till en Integer. Surt om man ska behöva göra anropet manuellt...

Permalänk
Medlem

Är det ditt XML-RPC-bibliotek som alltid gör om det till en int eller är det rTorrent som alltid skickar en int?

Permalänk
Medlem

http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide

"http://xmlrpc-c.sourceforge.net/ 1.00 or later, 1.07 or later for 64bit integer support."

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk
Medlem

Kan det här vara det problem du har?
Kan nog inte hjälpa dig så mycket mer då jag aldrig använt rTorrent.

Permalänk

Garret, precis. Att kompilera xmlrpc-c, libtorrent och rtorrent från svn gjorde susen.

Tänkte bara skriva det, så att om någon i framtiden söker så är det lösningen. De paket jag behövde för att kompilera dessa var libcppunit-dev libcurl4-openssl-dev och libsigc++-2.0-dev. När man kompilerat och kört make install får man inte heller glömma sudo ldconfig innan man startar rtorrent.