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)]
31 [OperationContract (Action
= "*", IsOneWay
= true)]
32 void SendMessage (Message msg
);
37 [DataContract (Name
= "Referral", Namespace
= Constants
.NetPeer
)]
38 internal class Referral
41 public ulong Id { get; set; }
44 public PeerNodeAddress PeerNodeAddress { get; set; }
47 internal enum RefuseReason
54 internal enum DisconnectReason
64 [DataContract (Name
= "Connect", Namespace
= Constants
.NetPeer
)]
65 internal class ConnectInfoDC
68 public PeerNodeAddress Address { get; set; }
70 public ulong NodeId { get; set; }
73 [MessageContract (IsWrapped
= false)]
74 internal class ConnectInfo
78 dc
= new ConnectInfoDC ();
81 [MessageBodyMember (Name
= "Connect", Namespace
= Constants
.NetPeer
)]
84 public PeerNodeAddress Address
{
85 get { return dc.Address; }
86 set { dc.Address = value; }
90 get { return dc.NodeId; }
91 set { dc.NodeId = value; }
97 [DataContract (Name
= "Welcome", Namespace
= Constants
.NetPeer
)]
98 internal class WelcomeInfoDC
101 public ulong NodeId { get; set; }
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
)]
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; }
130 [DataContract (Name
= "Refuse", Namespace
= Constants
.NetPeer
)]
131 internal class RefuseInfoDC
134 public Referral
[] Referrals { get; set; }
136 public RefuseReason Reason { get; set; }
139 [MessageContract (IsWrapped
= false)]
140 internal class RefuseInfo
144 dc
= new RefuseInfoDC ();
147 [MessageBodyMember (Name
= "Refuse", Namespace
= Constants
.NetPeer
)]
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; }
163 [DataContract (Name
= "Disconnect", Namespace
= Constants
.NetPeer
)]
164 internal class DisconnectInfoDC
167 public Referral
[] Referrals { get; set; }
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
)]
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; }
196 [DataContract (Name
= "LinkUtilityInfo", Namespace
= Constants
.NetPeer
)]
197 internal class LinkUtilityInfoDC
200 public uint Total { get; set; }
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
;
217 get { return dc.Total; }
218 set { dc.Total = value; }
222 get { return dc.Useful; }
223 set { dc.Useful = value; }