Libraryless. Click here for Pure Java version (11672L/79K).
extend RC {
transient RemoteDB db;
S getString(S field) { ret db.xS(this, field); }
O get(S field) { ret db.xget(this, field); }
void set(S field, O value) { db.xset(this, field, value); }
}
sclass RemoteDB implements AutoCloseable {
DialogIO db;
S name;
// s = bot name or snippet ID
*(S s) {
this(s, false);
}
*(S s, bool autoStart) {
name = s;
if (isSnippetID(s)) name = dbBotName(s);
db = findBot(name);
if (db == null)
if (autoStart) {
nohupJavax(fsI(s));
waitForBotStartUp(name);
assertNotNull("Weird problem", db = findBot(s));
} else
fail("DB " + s + " not running");
}
bool functional() { ret db != null; } // now always true
L<RC> list() { ret adopt((L<RC>) rpc(db, "xlist")); }
L<RC> list(S className) { ret adopt((L<RC>) rpc(db, "xlist", className)); }
L<RC> xlist() { ret list(); }
L<RC> xlist(S className) { ret list(className); }
// adopt is an internal method
L<RC> adopt(L<RC> l) {
if (l != null) for (RC rc : l) adopt(rc);
ret l;
}
RC adopt(RC rc) { if (rc != null) rc.db = this; ret rc; }
O adopt(O o) {
if (o instanceof RC) ret adopt((RC) o);
ret o;
}
S xclass(RC o) {
ret (S) rpc(db, "xclass", o);
}
O xget(RC o, S field) {
ret adopt(rpc(db, "xget", o, field));
}
S xS(RC o, S field) {
ret (S) xget(o, field);
}
RC xgetref(RC o, S field) {
ret adopt((RC) xget(o, field));
}
void xset(RC o, S field, O value) {
rpc(db, "xset", o, field, value);
}
RC uniq(S className) {
RC ref = first(list(className));
if (ref == null)
ref = xnew(className);
ret ref;
}
RC xuniq(S className) { ret uniq(className); }
RC xnew(S className, O... values) {
ret adopt((RC) rpc(db, "xnew", className, values));
}
void xdelete(RC o) {
rpc(db, "xdelete", o);
}
void xdelete(L<RC> l) {
rpc(db, "xdelete", l);
}
public void close() {
_close(db);
}
S fullgrab() { ret (S) rpc(db, "xfullgrab"); }
S xfullgrab() { ret fullgrab(); }
void xshutdown() { rpc(db, "xshutdown"); }
long xchangeCount() { ret (long) rpc(db, "xchangeCount"); }
int xcount() { ret (int) rpc(db, "xcount"); }
void reconnect {
close();
db = findBot(name);
}
RC rc(long id) { ret new RC(this, id); }
}Began life as a copy of #1004925
download show line numbers debug dex old transpilations
Travelled to 20 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, imzmzdywqqli, ishqpsrjomds, jtubtzbbkimh, lpdgvwnxivlt, lulzaavyztxj, mqqgnosmbjvj, onxytkatvevr, ppjhyzlbdabe, pyentgdyhuwx, pzhvpgtvlbxg, sawdedvomwva, tslmcundralx, tvejysmllsmz, vouqrxazstgt, wtqryiryparv
No comments. add comment
| Snippet ID: | #1005774 |
| Snippet name: | RemoteDB v2 (using + extending RC) |
| Eternal ID of this version: | #1005774/25 |
| Text MD5: | e254f3ad5c212a6ce9ecb6c2c758b3d7 |
| Transpilation MD5: | 8a9a7018d8d2a6621e6a2bd202b4402d |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2019-07-14 11:07:30 |
| Source code size: | 2478 bytes / 109 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 1170 / 9085 |
| Version history: | 24 change(s) |
| Referenced in: | #1034167 - Standard Classes + Interfaces (LIVE, continuation of #1003674) |