// // ResolveInfo.cs // // Author: // Marcos Cobena (marcoscobena@gmail.com) // // Copyright 2007 Marcos Cobena (http://www.youcannoteatbits.org/) // using System.Runtime.Serialization; namespace System.ServiceModel.PeerResolvers { [MessageContract (IsWrapped = false)] public class ResolveInfo { [MessageBodyMember (Name = "Resolve", Namespace = "http://schemas.microsoft.com/net/2006/05/peer")] ResolveInfoDC Body { get { if (body == null) body = new ResolveInfoDC (); return body; } set { body = value; } } ResolveInfoDC body; public ResolveInfo () { } public ResolveInfo (Guid clientId, string meshId, int maxAddresses) { if (clientId == Guid.Empty) throw new ArgumentException ("Empty Guid"); if (String.IsNullOrEmpty (meshId)) throw new ArgumentNullException ("meshId"); if (maxAddresses <= 0) throw new ArgumentOutOfRangeException ("maxAddresses must be positive integer"); Body.ClientId = clientId; Body.MeshId = meshId; Body.MaxAddresses = maxAddresses; } public Guid ClientId { get { return Body.ClientId; } } public int MaxAddresses { get { return Body.MaxAddresses; } } public string MeshId { get { return Body.MeshId; } } public bool HasBody () { return true; // FIXME: I have no idea when it returns false } } [DataContract (Name = "Resolve", Namespace = "http://schemas.microsoft.com/net/2006/05/peer")] internal class ResolveInfoDC { Guid client_id; int max_addresses; string mesh_id; public ResolveInfoDC () { } [DataMember] public Guid ClientId { get { return client_id; } set { client_id = value; } } [DataMember] public int MaxAddresses { get { return max_addresses; } set { max_addresses = value; } } [DataMember] public string MeshId { get { return mesh_id; } set { mesh_id = value; } } } }