void wwsig(WvDbusWriter w, Dbus.Field c, string sig, string val) { w.Write((byte)c); w.WriteSig(sig); w.WriteSig(val); }
static void CallExecScalar(WvDbus conn, WvDbusMsg call, out WvDbusMsg reply) { if (call.signature != "s") { reply = CreateUnknownMethodReply(call, "ExecScalar"); return; } if (call.Body == null) { reply = call.err_reply ("org.freedesktop.DBus.Error.InvalidSignature", "Signature provided but no body received"); return; } string clientid = GetClientId(call); if (clientid == null) { reply = call.err_reply("org.freedesktop.DBus.Error.Failed", "Could not identify the client"); return; } var it = call.iter(); string query = it.pop(); object result; VxColumnType coltype; VxDb.ExecScalar(clientid, (string)query, out coltype, out result); WvDbusWriter writer = new WvDbusWriter(); writer.WriteSig(VxColumnTypeToSignature(coltype)); WriteV(writer, coltype, result); reply = call.reply("v").write(writer); }
void wwu(WvDbusWriter w, Dbus.Field c, string sig, uint val) { w.Write((byte)c); w.WriteSig(sig); w.Write(val); }
// a(issnny)vaay public static WvDbusWriter PrepareRecordsetWriter(VxColumnInfo[] colinfo, object[][] data, byte[][] nulldata) { WvDbusWriter writer = new WvDbusWriter(); // a(issnny) WriteColInfo(writer, colinfo); // v if (colinfo.Length <= 0) { // Some clients can't parse a() (empty struct) properly, so // we'll have an empty array of (i) instead. writer.WriteSig("a(i)"); } else writer.WriteSig(VxColumnInfoToArraySignature(colinfo)); // a(whatever) writer.WriteArray(8, data, (w2, r) => { for (int i = 0; i < colinfo.Length; i++) WriteV(w2, colinfo[i].VxColumnType, r[i]); }); // aay writer.WriteArray(4, nulldata, (w2, r) => { w2.Write(r); }); return writer; }