static void CallGetSchemaChecksums(WvDbus conn, WvDbusMsg call, out WvDbusMsg reply) { if (call.signature.ne()) { reply = CreateUnknownMethodReply(call, "GetSchemaChecksums"); return; } string clientid = GetClientId(call); if (clientid == null) { reply = call.err_reply("org.freedesktop.DBus.Error.Failed", "Could not identify the client"); return; } // FIXME: Add vx.db.toomuchdata error WvDbusWriter writer = new WvDbusWriter(); //FIXME: No exception catching? using (var dbi = VxSqlPool.create(clientid)) { VxDbSchema backend = new VxDbSchema(dbi); VxSchemaChecksums sums = backend.GetChecksums(); sums.WriteChecksums(writer); } reply = call.reply(VxSchemaChecksums.GetDbusSignature()).write(writer); }
static void CallPutSchemaData(WvDbus conn, WvDbusMsg call, out WvDbusMsg reply) { if (call.signature != "ss") { reply = CreateUnknownMethodReply(call, "PutSchemaData"); 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 tablename = it.pop(); string text = it.pop(); using (var dbi = VxSqlPool.create(clientid)) { VxDbSchema backend = new VxDbSchema(dbi); backend.PutSchemaData(tablename, text, 0); } reply = call.reply(); }
static void CallGetSchemaData(WvDbus conn, WvDbusMsg call, out WvDbusMsg reply) { if (call.signature != "ss") { reply = CreateUnknownMethodReply(call, "GetSchemaData"); 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 tablename = it.pop(); string where = it.pop(); WvDbusWriter writer = new WvDbusWriter(); // FIXME: No exception catching? // FIXME: Should receive the replace/skip parameters via dbus using (var dbi = VxSqlPool.create(clientid)) { VxDbSchema backend = new VxDbSchema(dbi); string schemadata = backend.GetSchemaData(tablename, 0, where, null, null); writer.Write(schemadata); } reply = call.reply("s").write(writer); }
static void CallPutSchema(WvDbus conn, WvDbusMsg call, out WvDbusMsg reply) { if (call.signature != String.Format("{0}i", VxSchema.GetDbusSignature())) { reply = CreateUnknownMethodReply(call, "PutSchema"); 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(); VxSchema schema = new VxSchema(it.pop()); int opts = it.pop(); VxSchemaErrors errs; using (var dbi = VxSqlPool.create(clientid)) { VxDbSchema backend = new VxDbSchema(dbi); errs = backend.Put(schema, null, (VxPutOpts)opts); } WvDbusWriter writer = new WvDbusWriter(); VxSchemaErrors.WriteErrors(writer, errs); reply = call.reply(VxSchemaErrors.GetDbusSignature()).write(writer); if (errs != null && errs.Count > 0) { reply.type = Wv.Dbus.MType.Error; reply.err = "org.freedesktop.DBus.Error.Failed"; } }
static void CallDropSchema(WvDbus conn, WvDbusMsg call, out WvDbusMsg reply) { if (call.signature != "as") { reply = CreateUnknownMethodReply(call, "DropSchema"); 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[] keys = it.pop().Cast<string>().ToArray(); VxSchemaErrors errs; using (var dbi = VxSqlPool.create(clientid)) { VxDbSchema backend = new VxDbSchema(dbi); errs = backend.DropSchema(keys); } WvDbusWriter writer = new WvDbusWriter(); VxSchemaErrors.WriteErrors(writer, errs); reply = call.reply(VxSchemaErrors.GetDbusSignature()).write(writer); if (errs != null && errs.Count > 0) { reply.type = Wv.Dbus.MType.Error; reply.err = "org.freedesktop.DBus.Error.Failed"; } }
static void CallGetSchema(WvDbus conn, WvDbusMsg call, out WvDbusMsg reply) { if (call.signature != "as") { reply = CreateUnknownMethodReply(call, "GetSchema"); 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[] names = it.pop().Cast<string>().ToArray(); WvDbusWriter writer = new WvDbusWriter(); using (var dbi = VxSqlPool.create(clientid)) { VxDbSchema backend = new VxDbSchema(dbi); VxSchema schema = backend.Get(names); schema.WriteSchema(writer); } reply = call.reply(VxSchema.GetDbusSignature()).write(writer); }