Copyright (C) 2011 Collabora Ltd.

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 Street, Fifth Floor, Boston, MA 02110-1301, USA.

This interface exists to provide a mechanism to include arbitrary additional information in file transfers. For example, one might want to send a document and include the number of times the character P appeared in the file, so would add NumberOfPs=42 to the Metadata property.

ServiceName living in its own property makes it easier for specific applications to send files to each other, bypassing the standard handler. For example, the Banshee Telepathy plugin handler could match on ServiceName so the Empathy file transfer is not used instead.

A string representing the service name that will be used over the file transfer channel. This property is equivalent to the Channel.Type.DBusTube1.ServiceName and Channel.Type.StreamTube1.Service properties. If no service name is given then this property will be the empty string.

Additional information about the file transfer set by the channel initiator. If no additional information is given then this property will be empty.

A mapping from string key to a list of strings, used in the Metadata property. To emulate a simple string → string hash table one should have exactly one member in the value string list. This property is an a{sas} primarily because this maps easily to XEP-0004 Data Forms, and allows more structured metadata than a{ss} would. (For instance, a list of RDF triples could be expressed as one long array of strings, or as three-element values for a series of dummy key names, rather than as one big string blob.) While it might be convenient for applications to allow keys of arbitrary types, the added convenience would be outweighed by having to define the XMPP representation