2010-06-03 Jb Evain <jbevain@novell.com>
[mcs.git] / class / System.ServiceModel / System.ServiceModel.PeerResolvers / IPeerConnectorContract.cs
blob72d1e4be9add08e1084a49fbe09bc4013cecaf23
1 using System;
2 using System.Runtime.Serialization;
3 using System.ServiceModel;
4 using System.ServiceModel.Channels;
5 using System.ServiceModel.PeerResolvers;
6 using System.ServiceModel.Description;
8 namespace System.ServiceModel.PeerResolvers
10 [ServiceContract (Namespace = Constants.NetPeer, SessionMode = SessionMode.Allowed, CallbackContract = typeof (IPeerConnectorContract))]
11 internal interface IPeerConnectorContract
13 [OperationContract (Action = Constants.NetPeer + "/Connect", IsOneWay = true)]
14 void Connect (ConnectInfo connect);
16 [OperationContract (Action = Constants.NetPeer + "/Welcome", IsOneWay = true)]
17 void Welcome (WelcomeInfo welcome);
19 [OperationContract (Action = Constants.NetPeer + "/Refuse", IsOneWay = true)]
20 void Refuse (RefuseInfo refuse);
22 [OperationContract (Action = Constants.NetPeer + "/Disconnect", IsOneWay = true)]
23 void Disconnect (DisconnectInfo disconnect);
25 [OperationContract (Action = Constants.NetPeer + "/LinkUtility", IsOneWay = true)]
26 void LinkUtility (LinkUtilityInfo linkUtility);
28 [OperationContract (Action = Constants.NetPeer + "/Ping", IsOneWay = true)]
29 void Ping ();
31 [OperationContract (Action = "*", IsOneWay = true)]
32 void SendMessage (Message msg);
35 // Common datatype
37 [DataContract (Name = "Referral", Namespace = Constants.NetPeer)]
38 internal class Referral
40 [DataMember]
41 public ulong Id { get; set; }
43 [DataMember]
44 public PeerNodeAddress PeerNodeAddress { get; set; }
47 internal enum RefuseReason
49 DuplicateNeighbor,
50 DuplicateNodeId,
51 NodeBusy,
54 internal enum DisconnectReason
56 LeavingMesh,
57 NotUsefulNeighbor,
58 DuplicateNeighbor,
59 DuplicateNodeId,
62 // Connect
64 [DataContract (Name = "Connect", Namespace = Constants.NetPeer)]
65 internal class ConnectInfoDC
67 [DataMember]
68 public PeerNodeAddress Address { get; set; }
69 [DataMember]
70 public ulong NodeId { get; set; }
73 [MessageContract (IsWrapped = false)]
74 internal class ConnectInfo
76 public ConnectInfo ()
78 dc = new ConnectInfoDC ();
81 [MessageBodyMember (Name = "Connect", Namespace = Constants.NetPeer)]
82 ConnectInfoDC dc;
84 public PeerNodeAddress Address {
85 get { return dc.Address; }
86 set { dc.Address = value; }
89 public ulong NodeId {
90 get { return dc.NodeId; }
91 set { dc.NodeId = value; }
95 // Welcome
97 [DataContract (Name = "Welcome", Namespace = Constants.NetPeer)]
98 internal class WelcomeInfoDC
100 [DataMember]
101 public ulong NodeId { get; set; }
102 [DataMember]
103 public Referral [] Referrals { get; set; }
106 [MessageContract (IsWrapped = false)]
107 internal class WelcomeInfo
109 public WelcomeInfo ()
111 dc = new WelcomeInfoDC ();
114 [MessageBodyMember (Name = "Welcome", Namespace = Constants.NetPeer)]
115 WelcomeInfoDC dc;
117 public ulong NodeId {
118 get { return dc.NodeId; }
119 set { dc.NodeId = value; }
122 public Referral [] Referrals {
123 get { return dc.Referrals; }
124 set { dc.Referrals = value; }
128 // Refuse
130 [DataContract (Name = "Refuse", Namespace = Constants.NetPeer)]
131 internal class RefuseInfoDC
133 [DataMember]
134 public Referral [] Referrals { get; set; }
135 [DataMember]
136 public RefuseReason Reason { get; set; }
139 [MessageContract (IsWrapped = false)]
140 internal class RefuseInfo
142 public RefuseInfo ()
144 dc = new RefuseInfoDC ();
147 [MessageBodyMember (Name = "Refuse", Namespace = Constants.NetPeer)]
148 RefuseInfoDC dc;
150 public Referral [] Referrals {
151 get { return dc.Referrals; }
152 set { dc.Referrals = value; }
155 public RefuseReason Reason {
156 get { return dc.Reason; }
157 set { dc.Reason = value; }
161 // Disconnect
163 [DataContract (Name = "Disconnect", Namespace = Constants.NetPeer)]
164 internal class DisconnectInfoDC
166 [DataMember]
167 public Referral [] Referrals { get; set; }
168 [DataMember]
169 public DisconnectReason Reason { get; set; }
172 [MessageContract (IsWrapped = false)]
173 internal class DisconnectInfo
175 public DisconnectInfo ()
177 dc = new DisconnectInfoDC ();
180 [MessageBodyMember (Name = "Disconnect", Namespace = Constants.NetPeer)]
181 DisconnectInfoDC dc;
183 public Referral [] Referrals {
184 get { return dc.Referrals; }
185 set { dc.Referrals = value; }
188 public DisconnectReason Reason {
189 get { return dc.Reason; }
190 set { dc.Reason = value; }
194 // LinkUtilityInfo
196 [DataContract (Name = "LinkUtilityInfo", Namespace = Constants.NetPeer)]
197 internal class LinkUtilityInfoDC
199 [DataMember]
200 public uint Total { get; set; }
201 [DataMember]
202 public uint Useful { get; set; }
205 [MessageContract (IsWrapped = false)]
206 internal class LinkUtilityInfo
208 public LinkUtilityInfo ()
210 dc = new LinkUtilityInfoDC ();
213 [MessageBodyMember (Name = "LinkUtilityInfo", Namespace = Constants.NetPeer)]
214 LinkUtilityInfoDC dc;
216 public uint Total {
217 get { return dc.Total; }
218 set { dc.Total = value; }
221 public uint Useful {
222 get { return dc.Useful; }
223 set { dc.Useful = value; }