All pastes #52427 Raw Edit

Stuff

public text v1 · immutable
#52427 ·published 2006-04-30 19:26 UTC
rendered paste body
using System;
using System.Xml;
using jabber.protocol;

namespace Sample
{
	/// <summary>
	///		<iq to='juliet@capulet.com/balcony'
	///			from='romeo@montague.net/orchard'
	///			id='jingle1'
	///			type='set'>
	///			<jingle xmlns='http://jabber.org/protocol/jingle'
	///				action='session-initiate'
	///				initiator='romeo@montague.net/orchard'
	///				sid='a73sjjvkla37jfea'>
	///				<description ...> 
	///				<transport xmlns='http://jabber.org/protocol/jingle/transport/iax' version='2'/>
	///			</jingle>
	///		</iq>
	/// </summary>
	public class JingleIQ : jabber.protocol.client.IQ
	{
		public JingleIQ(XmlDocument doc) : base(doc) { }

		public XmlElement Jingle
		{
			get { return this["jingle"]; }
		}

		public XmlElement Description
		{
			get { return this["description"]; }
		}

		public XmlElement Transport
		{
			get { return this["transport"]; }
		}
	}

	/// <summary>
	///		<jingle xmlns='http://jabber.org/protocol/jingle'
	///			action='session-initiate'
	///			initiator='romeo@montague.net/orchard'
	///			sid='a73sjjvkla37jfea'>
	///			<description ...> 
	///			<transport xmlns='http://jabber.org/protocol/jingle/transport/iax' version='2'/>
	///		</jingle>
	/// </summary>
	public class Jingle : jabber.protocol.Element
	{
		public Jingle(XmlDocument doc) : base("jingle", URI.JINGLE, doc) { }

		public Jingle(string prefix, XmlQualifiedName qname, XmlDocument doc) : base(prefix, qname, doc) { }

		public string Action
		{
			get { return GetAttribute("action"); }
			set { SetAttribute("action", value); }
		}

		public string Initiator
		{
			get { return GetAttribute("initiator"); }
			set { SetAttribute("initiator", value); }
		}

		public string SID
		{
			get { return GetAttribute("sid"); }
			set { SetAttribute("sid", value); }
		}

		public XmlElement Description
		{
			get { return this["description"]; }
		}

		public JingleTransport Transport
		{
			get 
			{ 
				try
				{
					JingleTransport transport = (JingleTransport)this["transport"];;
					return transport; 
				}
				catch (Exception e)
				{
					Console.WriteLine();
				}
				return null;
			}
		}
	}

	/// <summary>
	///		<transport xmlns='http://jabber.org/protocol/jingle/transport/iax' 
	///			version='2' 
	///			secure='aes128' 
	///			user='some-Asterisk-Username' 
	///			password='some-Asterisk-Password'>
	///			<candidate name='local' ip='some-Local-IP-address-here' port='some-Local-Port-here'/>
	///			<candidate name='public' ip='some-Remote-IP-address-here' port='some-Remote-Port-here'/>
	///		</transport>
	/// </summary>
	public class JingleTransport : jabber.protocol.Element
	{
		public JingleTransport(XmlDocument doc) : base("transport", URI.JINGLE_IAX, doc) { }
		public JingleTransport(string prefix, XmlQualifiedName qname, XmlDocument doc) : base(prefix, qname, doc) { }

		public string Version
		{
			get { return GetAttribute("version"); }
			set { SetAttribute("version", value); }
		}

		public string Secure
		{
			get { return GetAttribute("secure"); }
			set { SetAttribute("secure", value); }
		}

		public string User
		{
			get { return GetAttribute("user"); }
			set { SetAttribute("user", value); }
		}

		public string Password
		{
			get { return GetAttribute("password"); }
			set { SetAttribute("password", value); }
		}

		public JingleCandidate[] Candidates
		{
			get 
			{
				XmlNodeList nl = GetElementsByTagName("candidate");
				JingleCandidate[] items = new JingleCandidate[nl.Count];
				
				int i=0;
				foreach (XmlNode n in nl)
				{
					items[i] = (JingleCandidate) n;
					i++;
				}
				return items;
			}
		}
	}

	/// <summary>
	///		<candidate name='local' ip='some-Local-IP-address-here' port='some-Local-Port-here'/>
	/// </summary>
	public class JingleCandidate : jabber.protocol.Element
	{
		public JingleCandidate(XmlDocument doc) : base("candidate", doc) { }
		public JingleCandidate(string prefix, XmlQualifiedName qname, XmlDocument doc) : base(prefix, qname, doc) { }

		public new string Name
		{
			get { return GetAttribute("name"); }
			set { SetAttribute("name", value); }
		}

		public string IP
		{
			get { return GetAttribute("ip"); }
			set { SetAttribute("ip", value); }
		}

		public string Port
		{
			get { return GetAttribute("port"); }
			set { SetAttribute("port", value); }
		}

		public string URI
		{
			get { return GetAttribute("uri"); }
			set { SetAttribute("uri", value); }
		}

	}
}