Compare commits

...

1 Commits

Author SHA1 Message Date
Gergely Polonkai
9fc78a4485 TMP 2016-10-25 18:12:08 +02:00
4 changed files with 95 additions and 33 deletions

View File

@ -18,13 +18,75 @@
using TelepathyGLib; using TelepathyGLib;
[DBUS (name = "org.freedesktop.Telepathy.ConnectionManager.cauchy")] [DBus (name = "org.freedesktop.Telepathy.ConnectionManager")]
public class Cauchy.ConnectionManager : BaseConnectionManager { public class Cauchy.ConnectionManager : Object {
class construct { public struct CMParams {
cm_dbus_name = "cauchy"; string name;
ConnMgrParamFlags flags;
string signature;
Variant default_value;
} }
construct { public unowned string
add_protocol(new Cauchy.Protocol()); get_name()
throws TelepathyGLib.Error
{
return "cauchy";
}
public bool
has_protocol(string protocol)
throws TelepathyGLib.Error
{
return (protocol == "matrix");
}
public void
get_parameters(string protocol,
out CMParams[] parameters)
throws TelepathyGLib.Error
{
parameters = {
};
parameters += CMParams() {
name = "account",
flags = ConnMgrParamFlags.REQUIRED,
signature = "s",
default_value = new Variant.maybe(VariantType.STRING, null)
};
}
private void
on_bus_acquired(DBusConnection conn)
{
try {
conn.register_object(
"/org/freedesktop/Telepathy/ConnectionManager/cauchy",
this);
} catch (IOError e) {
stderr.printf("Could not register service: %s\n", e.message);
}
try {
conn.register_object(
"/org/freedesktop/Telepathy/ConnectionManager/cauchy/matrix",
new Cauchy.Protocol());
} catch (IOError e) {
stderr.printf("Could not register protocol: %s\n", e.message);
}
}
public void
run()
{
Bus.own_name(BusType.SESSION,
"org.freedesktop.Telepathy.ConnectionManager.cauchy",
BusNameOwnerFlags.NONE,
on_bus_acquired,
() => {},
() => stderr.printf("Could not acquire name.\n"));
new MainLoop().run();
} }
} }

View File

@ -18,4 +18,22 @@
using TelepathyGLib; using TelepathyGLib;
public class Cauchy.Protocol : BaseProtocol {} [DBus (name = "org.freedesktop.Telepathy.Protocol")]
public class Cauchy.Protocol : Object {
public void
identify_account(HashTable<string, Variant> parameters,
out string account_id)
throws TelepathyGLib.Error
{
throw new TelepathyGLib.Error.NOT_IMPLEMENTED(
"This feature is not implemented");
}
public void
normalize_contact(string contact_id, out string normalized_contact_id)
throws TelepathyGLib.Error
{
throw new TelepathyGLib.Error.NOT_IMPLEMENTED(
"This feature is meaningless on Matrix");
}
}

View File

@ -20,37 +20,17 @@
#include <telepathy-glib/telepathy-glib.h> #include <telepathy-glib/telepathy-glib.h>
#include "cauchy-connection-manager.h" #include "cauchy.h"
#include "cauchy-debug.h" #include "cauchy-debug.h"
static TpBaseConnectionManager *
_construct_cm(void)
{
TpBaseConnectionManager *base_cm = TP_BASE_CONNECTION_MANAGER(
g_object_new(CAUCHY_TYPE_CONNECTION_MANAGER, NULL));
return base_cm;
}
int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
TpDebugSender *debug_sender; CauchyConnectionManager *cm;
int result;
g_type_init(); cm = cauchy_connection_manager_new();
tp_debug_divert_messages(g_getenv("CAUCHY_LOGFILE")); cauchy_connection_manager_run(cm);
g_object_unref(cm);
cauchy_debug_init(); return 0;
debug_sender = tp_debug_sender_dup();
result = tp_run_connection_manager(
"telepathy-cauchy", VERSION,
_construct_cm,
argc, argv);
g_object_unref (debug_sender);
return result;
} }

View File

@ -21,6 +21,8 @@ namespace TelepathyGLib {
public abstract class BaseProtocol : GLib.Object { public abstract class BaseProtocol : GLib.Object {
[CCode (has_construct_function = false)] [CCode (has_construct_function = false)]
public BaseProtocol(); public BaseProtocol();
public string name { get; construct; }
} }
[CCode (cheader_filename = "telepathy-glib/telepathy-glib.h")] [CCode (cheader_filename = "telepathy-glib/telepathy-glib.h")]