<?xml version="1.0" ?>
<node name="/Channel_Interface_Mergeable_Conference"
  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <tp:copyright>Copyright © 2009 Collabora Limited</tp:copyright>
  <tp:copyright>Copyright © 2009 Nokia Corporation</tp:copyright>
  <tp:license xmlns="http://www.w3.org/1999/xhtml">
    <p>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.</p>

    <p>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.</p>

    <p>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 Street, Fifth Floor, Boston, MA
      02110-1301, USA.</p>
  </tp:license>
  <interface
    name="org.freedesktop.Telepathy.Channel.Interface.MergeableConference.DRAFT"
    tp:causes-havoc="experimental">
    <tp:added version="0.19.0">(draft 1)</tp:added>
    <tp:requires interface="org.freedesktop.Telepathy.Channel.Interface.Conference"/>

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
      <p>An interface for multi-user conference channels that can have
        additional individual channels merged into them after they are
        created.</p>

      <tp:rationale>
        <p>This interface addresses part of freedesktop.org <a
            href="http://bugs.freedesktop.org/show_bug.cgi?id=24906">bug
            #24906</a> (GSM-compatible conference calls). GSM is currently
          the only protocol known to implement this; PBXs might implement
          it too.</p>

        <p>It might be made into a mandatory-to-implement part of Conference,
          or kept as a separate interface, when stabilized.</p>
      </tp:rationale>
    </tp:docstring>

    <method name="Merge"
      tp:name-for-bindings="Merge">
      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        <p>Request that the given channel be incorporated into this
          channel.</p>

        <p>The given channel SHOULD be added to <tp:dbus-ref
            namespace="org.freedesktop.Telepathy.Channel.Interface"
            >Conference.Channels</tp:dbus-ref> if and only if the
          underlying protocol signals the merge in some way. It MUST NOT be
          added to <tp:dbus-ref
            namespace="org.freedesktop.Telepathy.Channel.Interface"
            >Conference.InitialChannels</tp:dbus-ref> (to preserve
          immutability).</p>

        <tp:rationale>
          <p>In GSM it is possible to merge additional calls into an ongoing
            conference.</p>

          <p>In XMPP this method could be implemented to merge a 1-1 Text
            channel into a MUC Text channel by inviting the peer from the Text
            channel into the MUC, or to merge a 1-1 Jingle call into a Muji
            call by inviting the peer from the Jingle call into the Muji call.
            (MUC and Muji channels are both implemented by XMPP MUCs, with
            Handle_Type_Room.)</p>
        </tp:rationale>
      </tp:docstring>

      <arg direction="in" name="Channel" type="o">
        <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
          <p>A channel with the same <tp:dbus-ref
              namespace="org.freedesktop.Telepathy.Channel"
              >ChannelType</tp:dbus-ref>
            as this one, but with <tp:dbus-ref
              namespace="org.freedesktop.Telepathy.Channel"
              >TargetHandleType</tp:dbus-ref> = CONTACT.</p>
        </tp:docstring>
      </arg>

      <tp:possible-errors>
        <tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument">
          <tp:docstring>
            The given channel isn't suitable for merging into this one: for
            instance, it might have the wrong channel type or handle type.
          </tp:docstring>
        </tp:error>
        <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented">
          <tp:docstring>
            It will never be possible to merge channels into this particular
            conference.
          </tp:docstring>
        </tp:error>
        <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable">
          <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
            The given channel is theoretically suitable for merging into this
            one, but that's not currently possible for some reason (for
            instance, this SHOULD be raised if a limit on the number of
            channels in a conference is exceeded).
            <strong>[FIXME: PermissionDenied?]</strong>
          </tp:docstring>
        </tp:error>
      </tp:possible-errors>
    </method>

  </interface>
</node>
