Imported Upstream version 3.6.0

Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
This commit is contained in:
Jo Shields
2014-08-13 10:39:27 +01:00
commit a575963da9
50588 changed files with 8155799 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Discovery;
namespace System.ServiceModel.Discovery.Version11
{
internal class AnnouncementClient11 : ClientBase<IAnnouncementContract11>, AnnouncementClient.IAnnouncementCommon
{
public AnnouncementClient11 (AnnouncementEndpoint endpoint)
: base (endpoint)
{
}
public IAsyncResult BeginAnnounceOnline (EndpointDiscoveryMetadata metadata, DiscoveryMessageSequence sequence, AsyncCallback callback, object state)
{
var md = new EndpointDiscoveryMetadata11 (metadata);
var seq = new DiscoveryMessageSequence11 (sequence);
var msg = new MessageContracts11.OnlineAnnouncement () { EndpointDiscoveryMetadata = md, MessageSequence = seq };
return Channel.BeginOnlineAnnouncement (msg, callback, state);
}
public void EndAnnounceOnline (IAsyncResult result)
{
Channel.EndOnlineAnnouncement (result);
}
public IAsyncResult BeginAnnounceOffline (EndpointDiscoveryMetadata metadata, DiscoveryMessageSequence sequence, AsyncCallback callback, object state)
{
var md = new EndpointDiscoveryMetadata11 (metadata);
var seq = new DiscoveryMessageSequence11 (sequence);
var msg = new MessageContracts11.OfflineAnnouncement () { EndpointDiscoveryMetadata = md, MessageSequence = seq };
return Channel.BeginOfflineAnnouncement (msg, callback, state);
}
public void EndAnnounceOffline (IAsyncResult result)
{
Channel.EndOfflineAnnouncement (result);
}
}
}

View File

@@ -0,0 +1,97 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2009,2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
namespace System.ServiceModel.Discovery.Version11
{
[XmlSchemaProvider ("GetSchema")]
public class DiscoveryMessageSequence11 : IXmlSerializable
{
public static DiscoveryMessageSequence11 FromDiscoveryMessageSequence (DiscoveryMessageSequence discoveryMessageSequence)
{
return new DiscoveryMessageSequence11 (discoveryMessageSequence);
}
static readonly DiscoveryVersion version = DiscoveryVersion.WSDiscovery11;
static XmlSchema schema;
static XmlSchema Schema {
get {
if (schema == null)
schema = DiscoveryMessageSequence.BuildSchema (version);
return schema;
}
}
public static XmlQualifiedName GetSchema (XmlSchemaSet schemaSet)
{
schemaSet.Add (Schema);
return new XmlQualifiedName ("AppSequenceType", version.Namespace);
}
// for deserialization
DiscoveryMessageSequence11 ()
{
}
internal DiscoveryMessageSequence11 (DiscoveryMessageSequence source)
{
this.source = source;
}
DiscoveryMessageSequence source;
public XmlSchema GetSchema ()
{
return Schema;
}
public void ReadXml (XmlReader reader)
{
source = DiscoveryMessageSequence.ReadXml (reader, version);
}
public DiscoveryMessageSequence ToDiscoveryMessageSequence ()
{
if (source == null)
throw new InvalidOperationException ("Call ReadXml method first to fill its contents");
return source;
}
public void WriteXml (XmlWriter writer)
{
source.WriteXml (writer);
}
}
}

View File

@@ -0,0 +1,72 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2009,2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
namespace System.ServiceModel.Discovery.Version11
{
internal class DiscoveryProxyClient11 : ClientBase<IDiscoveryProxyContract11>, DiscoveryClient.IDiscoveryCommon
{
public DiscoveryProxyClient11 (ServiceEndpoint endpoint)
: base (endpoint)
{
}
public IAsyncResult BeginFind (FindCriteria criteria, AsyncCallback callback, object state)
{
var req = new MessageContracts11.FindRequest () { Body = new FindCriteria11 (criteria) };
return Channel.BeginFind (req, callback, state);
}
public FindResponse EndFind (IAsyncResult result)
{
var ir = Channel.EndFind (result);
var ret = new FindResponse ();
foreach (var fr in ir.Body)
ret.Endpoints.Add (fr.ToEndpointDiscoveryMetadata ());
return ret;
}
public IAsyncResult BeginResolve (ResolveCriteria criteria, AsyncCallback callback, object state)
{
var req = new MessageContracts11.ResolveRequest () { Body = new ResolveCriteria11 (criteria) };
return Channel.BeginResolve (req, callback, state);
}
public ResolveResponse EndResolve (IAsyncResult result)
{
var ir = Channel.EndResolve (result);
var metadata = ir.Body.ToEndpointDiscoveryMetadata ();
var sequence = ir.MessageSequence.ToDiscoveryMessageSequence ();
return new ResolveResponse (metadata, sequence);
}
}
}

View File

@@ -0,0 +1,153 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2009,2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.Threading;
namespace System.ServiceModel.Discovery.Version11
{
internal class DiscoveryTargetClient11 : DuplexClientBase<IDiscoveryTargetContract11>, DiscoveryClient.IDiscoveryCommon
{
public DiscoveryTargetClient11 (ServiceEndpoint endpoint)
: this (new DiscoveryTargetCallback11 (), endpoint)
{
}
DiscoveryTargetClient11 (DiscoveryTargetCallback11 instance, ServiceEndpoint endpoint)
: base (instance, endpoint)
{
instance.ReplyFindCompleted += delegate (MessageContracts11.FindResponse response) {
find_completed = delegate { return response; };
reply_find_handle.Set ();
};
instance.ReplyResolveCompleted += delegate (MessageContracts11.ResolveResponse response) {
resolve_completed = delegate { return response; };
reply_resolve_handle.Set ();
};
}
// Find
Func<FindCriteria,FindResponse> find_delegate;
Func<MessageContracts11.FindResponse> find_completed;
ManualResetEvent reply_find_handle = new ManualResetEvent (false);
public IAsyncResult BeginFind (FindCriteria criteria, AsyncCallback callback, object state)
{
if (find_delegate == null)
find_delegate = new Func<FindCriteria,FindResponse> (Find);
return find_delegate.BeginInvoke (criteria, callback, state);
}
public FindResponse EndFind (IAsyncResult result)
{
return find_delegate.EndInvoke (result);
}
FindResponse Find (FindCriteria criteria)
{
var req = new MessageContracts11.FindRequest () { Body = new FindCriteria11 (criteria) };
Channel.BeginFind (req, delegate (IAsyncResult result) {
Channel.EndFind (result);
}, null);
var timeout = InnerChannel.OperationTimeout < criteria.Duration ? InnerChannel.OperationTimeout : criteria.Duration;
if (!reply_find_handle.WaitOne (timeout))
throw new EndpointNotFoundException ("The discovery client could not receive Find operation response within the operation timeout.");
try {
var ir = find_completed ();
var ret = new FindResponse ();
foreach (var fr in ir.Body)
ret.Endpoints.Add (fr.ToEndpointDiscoveryMetadata ());
return ret;
} finally {
find_completed = null;
}
}
// Resolve
Func<ResolveCriteria,ResolveResponse> resolve_delegate;
Func<MessageContracts11.ResolveResponse> resolve_completed;
ManualResetEvent reply_resolve_handle = new ManualResetEvent (false);
public IAsyncResult BeginResolve (ResolveCriteria criteria, AsyncCallback callback, object state)
{
if (resolve_delegate == null)
resolve_delegate = new Func<ResolveCriteria,ResolveResponse> (Resolve);
return resolve_delegate.BeginInvoke (criteria, callback, state);
}
public ResolveResponse EndResolve (IAsyncResult result)
{
return resolve_delegate.EndInvoke (result);
}
public ResolveResponse Resolve (ResolveCriteria criteria)
{
var req = new MessageContracts11.ResolveRequest () { Body = new ResolveCriteria11 (criteria) };
Channel.BeginResolve (req, delegate (IAsyncResult result) {
Channel.EndResolve (result);
}, null);
var timeout = InnerChannel.OperationTimeout < criteria.Duration ? InnerChannel.OperationTimeout : criteria.Duration;
if (!reply_find_handle.WaitOne (timeout))
throw new TimeoutException ();
try {
var ir = resolve_completed ();
var metadata = ir.Body.ToEndpointDiscoveryMetadata ();
var sequence = ir.MessageSequence.ToDiscoveryMessageSequence ();
return new ResolveResponse (metadata, sequence);
} finally {
resolve_completed = null;
}
}
internal class DiscoveryTargetCallback11 : IDiscoveryTargetCallbackContract11
{
public event Action<MessageContracts11.FindResponse> ReplyFindCompleted;
public event Action<MessageContracts11.ResolveResponse> ReplyResolveCompleted;
public void ReplyFind (MessageContracts11.FindResponse message)
{
if (ReplyFindCompleted != null)
ReplyFindCompleted (message);
}
public void ReplyResolve (MessageContracts11.ResolveResponse message)
{
if (ReplyResolveCompleted != null)
ReplyResolveCompleted (message);
}
}
}
}

View File

@@ -0,0 +1,90 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2009,2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
namespace System.ServiceModel.Discovery.Version11
{
[XmlSchemaProvider ("GetSchema")]
public class EndpointDiscoveryMetadata11 : IXmlSerializable
{
public static EndpointDiscoveryMetadata11 FromEndpointDiscoveryMetadata (EndpointDiscoveryMetadata endpointDiscoveryMetadata)
{
return new EndpointDiscoveryMetadata11 (endpointDiscoveryMetadata);
}
public static XmlQualifiedName GetSchema (XmlSchemaSet schemaSet)
{
EndpointAddress10.GetSchema (schemaSet);
schemaSet.Add (schema);
return new XmlQualifiedName ("ProbeMatchType", version.Namespace);
}
static readonly DiscoveryVersion version = DiscoveryVersion.WSDiscovery11;
static readonly XmlSchema schema = EndpointDiscoveryMetadata.BuildSchema (version);
// for deserialization use
EndpointDiscoveryMetadata11 ()
{
}
internal EndpointDiscoveryMetadata11 (EndpointDiscoveryMetadata source)
{
this.source = source;
}
EndpointDiscoveryMetadata source;
public XmlSchema GetSchema ()
{
return null;
}
public void ReadXml (XmlReader reader)
{
source = EndpointDiscoveryMetadata.ReadXml (reader, version);
}
public EndpointDiscoveryMetadata ToEndpointDiscoveryMetadata ()
{
if (source == null)
throw new InvalidOperationException ("Call ReadXml method first before calling this method");
return source;
}
public void WriteXml (XmlWriter writer)
{
source.WriteXml (writer, version);
}
}
}

View File

@@ -0,0 +1,89 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2009,2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
namespace System.ServiceModel.Discovery.Version11
{
[XmlSchemaProvider ("GetSchema")]
public class FindCriteria11 : IXmlSerializable
{
public static FindCriteria11 FromFindCriteria (FindCriteria findCriteria)
{
return new FindCriteria11 (findCriteria);
}
static readonly DiscoveryVersion version = DiscoveryVersion.WSDiscovery11;
static XmlSchema schema = FindCriteria.BuildSchema (version);
public static XmlQualifiedName GetSchema (XmlSchemaSet schemaSet)
{
schemaSet.Add (schema);
return new XmlQualifiedName ("ProbeType", version.Namespace);
}
// for deserialization
FindCriteria11 ()
{
}
internal FindCriteria11 (FindCriteria source)
{
this.source = source;
}
FindCriteria source;
public XmlSchema GetSchema ()
{
return null;
}
public void ReadXml (XmlReader reader)
{
source = FindCriteria.ReadXml (reader, version);
}
public FindCriteria ToFindCriteria ()
{
if (source == null)
throw new InvalidOperationException ("Call ReadXml method before calling this method.");
return source;
}
public void WriteXml (XmlWriter writer)
{
source.WriteXml (writer, version);
}
}
}

View File

@@ -0,0 +1,49 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Discovery;
namespace System.ServiceModel.Discovery.Version11
{
[ServiceContract (Name = "Client", Namespace = MessageContracts11.NS)]
internal interface IAnnouncementContract11
{
[OperationContract (Name = "Hello", Action = MessageContracts11.HelloAction, IsOneWay = true, AsyncPattern = true)]
IAsyncResult BeginOnlineAnnouncement (MessageContracts11.OnlineAnnouncement message, AsyncCallback callback, object state);
void EndOnlineAnnouncement (IAsyncResult result);
[OperationContract (Name = "Bye", Action = MessageContracts11.ByeAction, IsOneWay = true, AsyncPattern = true)]
IAsyncResult BeginOfflineAnnouncement (MessageContracts11.OfflineAnnouncement message, AsyncCallback callback, object state);
void EndOfflineAnnouncement (IAsyncResult result);
}
}

View File

@@ -0,0 +1,49 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Discovery;
namespace System.ServiceModel.Discovery.Version11
{
[ServiceContract (Name = "DiscoveryProxy", Namespace = MessageContracts11.NS)]
internal interface IDiscoveryProxyContract11
{
[OperationContract (Name = "Probe11", Action = MessageContracts11.ProbeAction, AsyncPattern = true, ReplyAction = MessageContracts11.ProbeMatchAction)]
IAsyncResult BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state);
MessageContracts11.FindResponse EndFind (IAsyncResult result);
[OperationContract (Name = "Resolve11", Action = MessageContracts11.ResolveAction, AsyncPattern = true, ReplyAction = MessageContracts11.ResolveMatchAction)]
IAsyncResult BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state);
MessageContracts11.ResolveResponse EndResolve (IAsyncResult result);
}
}

View File

@@ -0,0 +1,63 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Discovery;
namespace System.ServiceModel.Discovery.Version11
{
[ServiceContract (Name = "TargetService", Namespace = MessageContracts11.NS, CallbackContract = typeof (IDiscoveryTargetCallbackContract11))]
internal interface IDiscoveryTargetContract11
{
[OperationContract (Name = "Probe11", Action = MessageContracts11.ProbeAction, AsyncPattern = true, IsOneWay = true)]
IAsyncResult BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state);
void EndFind (IAsyncResult result);
[OperationContract (Name = "Resolve11", Action = MessageContracts11.ResolveAction, AsyncPattern = true, IsOneWay = true)]
IAsyncResult BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state);
void EndResolve (IAsyncResult result);
[OperationContract (Name = "Hello11", Action = MessageContracts11.HelloAction, IsOneWay = true, AsyncPattern = true)]
IAsyncResult BeginOnlineAnnouncement (MessageContracts11.OnlineAnnouncement message, AsyncCallback callback, object state);
void EndOnlineAnnouncement (IAsyncResult result);
}
internal interface IDiscoveryTargetCallbackContract11
{
[OperationContract (Name = "ProbeMatches11", Action = MessageContracts11.ProbeMatchAction, IsOneWay = true)]
void ReplyFind (MessageContracts11.FindResponse message);
[OperationContract (Name = "ResolveMatches11", Action = MessageContracts11.ResolveMatchAction, IsOneWay = true)]
void ReplyResolve (MessageContracts11.ResolveResponse message);
}
}

View File

@@ -0,0 +1,133 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Discovery;
using System.Xml;
namespace System.ServiceModel.Discovery.Version11
{
internal class MessageContracts11
{
public const string NS = DiscoveryVersion.Namespace11;
public const string HelloAction = NS + "/Hello";
public const string ByeAction = NS + "/Bye";
public const string ProbeAction = NS + "/Probe";
public const string ProbeMatchAction = NS + "/ProbeMatches";
public const string ResolveAction = NS + "/Resolve";
public const string ResolveMatchAction = NS + "/ResolveMatches";
[MessageContract (IsWrapped = false)]
public class OnlineAnnouncement
{
public OnlineAnnouncement ()
{
Id = new UniqueId ();
}
[MessageHeader (Name = "AppSequence", Namespace = NS)]
public DiscoveryMessageSequence11 MessageSequence { get; set; }
[MessageHeader (Name = "MessageID", Namespace = "http://www.w3.org/2005/08/addressing")]
public UniqueId Id { get; set; }
[MessageBodyMember (Name = "Hello", Namespace = NS)]
public EndpointDiscoveryMetadata11 EndpointDiscoveryMetadata { get; set; }
}
[MessageContract (IsWrapped = false)]
public class OfflineAnnouncement
{
public OfflineAnnouncement ()
{
Id = new UniqueId ();
}
[MessageHeader (Name = "AppSequence", Namespace = NS)]
public DiscoveryMessageSequence11 MessageSequence { get; set; }
[MessageHeader (Name = "MessageID", Namespace = "http://www.w3.org/2005/08/addressing")]
public UniqueId Id { get; set; }
[MessageBodyMember (Name = "Bye", Namespace = NS)]
public EndpointDiscoveryMetadata11 EndpointDiscoveryMetadata { get; set; }
}
[MessageContract (IsWrapped = false)]
public class FindRequest
{
public FindRequest ()
{
Id = new UniqueId ();
}
[MessageHeader (Name = "MessageID", Namespace = "http://www.w3.org/2005/08/addressing")]
public UniqueId Id { get; set; }
[MessageBodyMember (Name = "Probe", Namespace = NS)]
public FindCriteria11 Body { get; set; }
}
[MessageContract (IsWrapped = false)]
public class FindResponse
{
[MessageHeader (Name = "AppSequence", Namespace = NS)]
public DiscoveryMessageSequence11 MessageSequence { get; set; }
[MessageBodyMember (Name = "ProbeMatches", Namespace = NS)]
public FindResponse11 Body { get; set; }
}
[CollectionDataContract (Name = "ProbeMatches", ItemName = "ProbeMatch", Namespace = NS)]
public class FindResponse11 : List<EndpointDiscoveryMetadata11>
{
}
[MessageContract (IsWrapped = false)]
public class ResolveRequest
{
public ResolveRequest ()
{
Id = new UniqueId ();
}
[MessageHeader (Name = "MessageID", Namespace = "http://www.w3.org/2005/08/addressing")]
public UniqueId Id { get; set; }
[MessageBodyMember (Name = "Resolve", Namespace = NS)]
public ResolveCriteria11 Body { get; set; }
}
[MessageContract (IsWrapped = false)]
public class ResolveResponse
{
[MessageHeader (Name = "AppSequence", Namespace = NS)]
public DiscoveryMessageSequence11 MessageSequence { get; set; }
[MessageBodyMember (Name = "ResolveMatches", Namespace = NS)]
public EndpointDiscoveryMetadata11 Body { get; set; }
}
}
}

View File

@@ -0,0 +1,85 @@
//
// Author: Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2009,2010 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
namespace System.ServiceModel.Discovery.Version11
{
[XmlSchemaProvider ("GetSchema")]
public class ResolveCriteria11 : IXmlSerializable
{
public static ResolveCriteria11 FromResolveCriteria (ResolveCriteria resolveCriteria)
{
return new ResolveCriteria11 (resolveCriteria);
}
static readonly DiscoveryVersion version = DiscoveryVersion.WSDiscovery11;
static XmlSchema schema = ResolveCriteria.BuildSchema (version);
public static XmlQualifiedName GetSchema (XmlSchemaSet schemaSet)
{
EndpointAddress10.GetSchema (schemaSet);
schemaSet.Add (schema);
return new XmlQualifiedName ("ResolveType", version.Namespace);
}
internal ResolveCriteria11 (ResolveCriteria source)
{
this.source = source;
}
ResolveCriteria source;
public XmlSchema GetSchema ()
{
return null;
}
public void ReadXml (XmlReader reader)
{
source = ResolveCriteria.ReadXml (reader, version);
}
public ResolveCriteria ToResolveCriteria ()
{
if (source == null)
throw new InvalidOperationException ("Call ReadXml method first before calling this method");
return source;
}
public void WriteXml (XmlWriter writer)
{
source.WriteXml (writer, version);
}
}
}