summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2009-12-09 12:14:10 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2009-12-14 17:52:58 +0000
commit8a88c8f4a6fe1ca7c61df144ad89971c5f02e2b6 (patch)
tree51b9a1bc8fad15ef7e89f0a6d0ee9094d349c74f /extensions
parente4675cc830d10f109b936671c3e53a2cc75244ce (diff)
extensions: give Call.Stream its own TpProxy subclass
When stable, this can be moved into telepathy-glib as TpCallStream.
Diffstat (limited to 'extensions')
-rw-r--r--extensions/Makefile.am18
-rw-r--r--extensions/all.xml1
-rw-r--r--extensions/call-stream.c161
-rw-r--r--extensions/call-stream.h62
-rw-r--r--extensions/call-stream.xml10
-rw-r--r--extensions/extensions.h2
-rw-r--r--extensions/misc.xml2
7 files changed, 254 insertions, 2 deletions
diff --git a/extensions/Makefile.am b/extensions/Makefile.am
index cf9095925..9e30a81f2 100644
--- a/extensions/Makefile.am
+++ b/extensions/Makefile.am
@@ -13,6 +13,7 @@ AM_CFLAGS = \
EXTRA_DIST = \
all.xml \
call-content.xml \
+ call-stream.xml \
channel.xml \
misc.xml
@@ -28,6 +29,8 @@ libfuture_extensions_la_LIBADD = \
libfuture_extensions_la_SOURCES = \
call-content.c \
call-content.h \
+ call-stream.c \
+ call-stream.h \
extensions.c \
extensions-cli.c \
extensions.h
@@ -44,12 +47,16 @@ nodist_libfuture_extensions_la_SOURCES = \
_gen/interfaces-body.h \
_gen/cli-call-content.h \
_gen/cli-call-content-body.h \
+ _gen/cli-call-stream.h \
+ _gen/cli-call-stream-body.h \
_gen/cli-channel.h \
_gen/cli-channel-body.h \
_gen/cli-misc.h \
_gen/cli-misc-body.h \
_gen/svc-call-content.h \
_gen/svc-call-content.c \
+ _gen/svc-call-stream.h \
+ _gen/svc-call-stream.c \
_gen/svc-channel.h \
_gen/svc-channel.c \
_gen/svc-misc.h \
@@ -58,6 +65,7 @@ nodist_libfuture_extensions_la_SOURCES = \
BUILT_SOURCES = \
_gen/all.xml \
_gen/call-content.xml \
+ _gen/call-stream.xml \
_gen/channel.xml \
$(nodist_libfuture_extensions_la_SOURCES)
@@ -142,6 +150,16 @@ _gen/cli-call-content-body.h _gen/cli-call-content.h: _gen/call-content.xml \
--tp-proxy-api=0.7.6 \
$< Future_Cli _gen/cli-call-content
+_gen/cli-call-stream-body.h _gen/cli-call-stream.h: _gen/call-stream.xml \
+ $(tools_dir)/glib-client-gen.py Makefile.am
+ $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \
+ --group=call_stream \
+ --subclass=FutureCallStream \
+ --subclass-assert=FUTURE_IS_CALL_STREAM \
+ --iface-quark-prefix=FUTURE_IFACE_QUARK \
+ --tp-proxy-api=0.7.6 \
+ $< Future_Cli _gen/cli-call-stream
+
# for now the Endpoint etc. interfaces are on every TpProxy - when we
# have a TpCallEndpoint etc., they should appear on that
diff --git a/extensions/all.xml b/extensions/all.xml
index c1cc172fc..618cef7b0 100644
--- a/extensions/all.xml
+++ b/extensions/all.xml
@@ -5,6 +5,7 @@
<tp:title>Extensions from the future</tp:title>
<xi:include href="call-content.xml"/>
+<xi:include href="call-stream.xml"/>
<xi:include href="channel.xml"/>
<xi:include href="misc.xml"/>
diff --git a/extensions/call-stream.c b/extensions/call-stream.c
new file mode 100644
index 000000000..b99539896
--- /dev/null
+++ b/extensions/call-stream.c
@@ -0,0 +1,161 @@
+/*
+ * call-stream.c - proxy for a Stream in a Call channel
+ *
+ * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2009 Nokia Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "extensions/call-stream.h"
+
+#include <telepathy-glib/proxy-subclass.h>
+#include <telepathy-glib/telepathy-glib.h>
+
+#include "extensions/extensions.h"
+
+/* Generated code */
+#include "_gen/cli-call-stream-body.h"
+
+/**
+ * SECTION:call-stream
+ * @title: FutureCallStream
+ * @short_description: proxy for a Stream in a Call channel
+ * @see_also: #TpChannel
+ *
+ * FIXME
+ *
+ * Since: FIXME
+ */
+
+/**
+ * FutureCallStreamClass:
+ *
+ * The class of a #FutureCallStream.
+ *
+ * Since: FIXME
+ */
+struct _FutureCallStreamClass {
+ TpProxyClass parent_class;
+ /*<private>*/
+ gpointer priv;
+};
+
+/**
+ * FutureCallStream:
+ *
+ * A proxy object for a Telepathy connection manager.
+ *
+ * Since: FIXME
+ */
+struct _FutureCallStream {
+ TpProxy parent;
+ /*<private>*/
+ FutureCallStreamPrivate *priv;
+};
+
+struct _FutureCallStreamPrivate {
+ int dummy;
+};
+
+G_DEFINE_TYPE (FutureCallStream,
+ future_call_stream,
+ TP_TYPE_PROXY);
+
+static void
+future_call_stream_init (FutureCallStream *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, FUTURE_TYPE_CALL_STREAM,
+ FutureCallStreamPrivate);
+}
+
+static void
+future_call_stream_class_init (FutureCallStreamClass *klass)
+{
+ TpProxyClass *proxy_class = (TpProxyClass *) klass;
+
+ g_type_class_add_private (klass, sizeof (FutureCallStreamPrivate));
+
+ proxy_class->must_have_unique_name = TRUE;
+ proxy_class->interface = FUTURE_IFACE_QUARK_CALL_STREAM;
+ future_call_stream_init_known_interfaces ();
+}
+
+/**
+ * future_call_stream_new:
+ * @channel: the Call channel
+ * @object_path: the object path of the stream; may not be %NULL
+ * @error: used to indicate the error if %NULL is returned
+ *
+ * <!-- -->
+ *
+ * Returns: a new stream proxy, or %NULL on invalid arguments
+ *
+ * Since: FIXME
+ */
+FutureCallStream *
+future_call_stream_new (TpChannel *channel,
+ const gchar *object_path,
+ GError **error)
+{
+ FutureCallStream *ret = NULL;
+
+ g_return_val_if_fail (TP_IS_CHANNEL (channel), NULL);
+ g_return_val_if_fail (object_path != NULL, NULL);
+
+ if (!tp_dbus_check_valid_object_path (object_path, error))
+ goto finally;
+
+ ret = FUTURE_CALL_STREAM (g_object_new (FUTURE_TYPE_CALL_STREAM,
+ /* FIXME: pass in the Channel as a property? */
+ "dbus-daemon", tp_proxy_get_dbus_daemon (channel),
+ "bus-name", tp_proxy_get_bus_name (channel),
+ "object-path", object_path,
+ NULL));
+
+finally:
+ return ret;
+}
+
+/**
+ * future_call_stream_init_known_interfaces:
+ *
+ * Ensure that the known interfaces for FutureCallStream have been set up.
+ * This is done automatically when necessary, but for correct
+ * overriding of library interfaces by local extensions, you should
+ * call this function before calling
+ * tp_proxy_or_subclass_hook_on_interface_add() with first argument
+ * %FUTURE_TYPE_CALL_STREAM.
+ *
+ * Since: 0.7.32
+ */
+void
+future_call_stream_init_known_interfaces (void)
+{
+ static gsize once = 0;
+
+ if (g_once_init_enter (&once))
+ {
+ GType tp_type = FUTURE_TYPE_CALL_STREAM;
+
+ tp_proxy_init_known_interfaces ();
+ tp_proxy_or_subclass_hook_on_interface_add (tp_type,
+ future_cli_call_stream_add_signals);
+ tp_proxy_subclass_add_error_mapping (tp_type,
+ TP_ERROR_PREFIX, TP_ERRORS, TP_TYPE_ERROR);
+
+ g_once_init_leave (&once, 1);
+ }
+}
diff --git a/extensions/call-stream.h b/extensions/call-stream.h
new file mode 100644
index 000000000..0a195bde0
--- /dev/null
+++ b/extensions/call-stream.h
@@ -0,0 +1,62 @@
+/*
+ * call-stream.h - proxy for a Stream in a Call channel
+ *
+ * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2009 Nokia Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef FUTURE_CALL_STREAM_H
+#define FUTURE_CALL_STREAM_H
+
+#include <telepathy-glib/channel.h>
+#include <telepathy-glib/proxy.h>
+
+G_BEGIN_DECLS
+
+typedef struct _FutureCallStream FutureCallStream;
+typedef struct _FutureCallStreamPrivate FutureCallStreamPrivate;
+typedef struct _FutureCallStreamClass FutureCallStreamClass;
+
+GType future_call_stream_get_type (void);
+
+/* TYPE MACROS */
+#define FUTURE_TYPE_CALL_STREAM \
+ (future_call_stream_get_type ())
+#define FUTURE_CALL_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), FUTURE_TYPE_CALL_STREAM, \
+ FutureCallStream))
+#define FUTURE_CALL_STREAM_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), FUTURE_TYPE_CALL_STREAM, \
+ FutureCallStreamClass))
+#define FUTURE_IS_CALL_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), FUTURE_TYPE_CALL_STREAM))
+#define FUTURE_IS_CALL_STREAM_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), FUTURE_TYPE_CALL_STREAM))
+#define FUTURE_CALL_STREAM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), FUTURE_TYPE_CALL_STREAM, \
+ FutureCallStreamClass))
+
+FutureCallStream *future_call_stream_new (TpChannel *channel,
+ const gchar *object_path, GError **error);
+
+void future_call_stream_init_known_interfaces (void);
+
+G_END_DECLS
+
+#include "extensions/_gen/cli-call-stream.h"
+
+#endif
diff --git a/extensions/call-stream.xml b/extensions/call-stream.xml
new file mode 100644
index 000000000..3e85b3791
--- /dev/null
+++ b/extensions/call-stream.xml
@@ -0,0 +1,10 @@
+<tp:spec
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+
+<tp:title>Call Stream</tp:title>
+
+<xi:include href="Call_Stream.xml"/>
+<xi:include href="Call_Stream_Interface_Media.xml"/>
+
+</tp:spec>
diff --git a/extensions/extensions.h b/extensions/extensions.h
index 87eeb2f2c..24d978748 100644
--- a/extensions/extensions.h
+++ b/extensions/extensions.h
@@ -8,10 +8,12 @@
#include "extensions/_gen/cli-channel.h"
#include "extensions/_gen/cli-misc.h"
#include "extensions/_gen/svc-call-content.h"
+#include "extensions/_gen/svc-call-stream.h"
#include "extensions/_gen/svc-channel.h"
#include "extensions/_gen/svc-misc.h"
#include "extensions/call-content.h"
+#include "extensions/call-stream.h"
G_BEGIN_DECLS
diff --git a/extensions/misc.xml b/extensions/misc.xml
index aad3b67a0..0384410f6 100644
--- a/extensions/misc.xml
+++ b/extensions/misc.xml
@@ -6,7 +6,5 @@
<xi:include href="Call_Content_Codec_Offer.xml"/>
<xi:include href="Call_Stream_Endpoint.xml"/>
-<xi:include href="Call_Stream_Interface_Media.xml"/>
-<xi:include href="Call_Stream.xml"/>
</tp:spec>