[ci] Move setting CFLAGS and MONO_CHECK_MODE into the run-jenkins.sh script
[mono.git] / mcs / class / System / System.Net.NetworkInformation / TcpStatistics.cs
1 //
2 // System.Net.NetworkInformation.TcpStatistics
3 //
4 // Authors:
5 //      Gonzalo Paniagua Javier (gonzalo@novell.com)
6 //      Atsushi Enomoto (atsushi@ximian.com)
7 //
8 // Copyright (c) 2006-2007 Novell, Inc. (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29 using System.Collections.Specialized;
30 using System.Globalization;
31
32 namespace System.Net.NetworkInformation {
33         public abstract class TcpStatistics {
34                 protected TcpStatistics ()
35                 {
36                 }
37                 
38                 public abstract long ConnectionsAccepted { get; }
39                 public abstract long ConnectionsInitiated { get; }
40                 public abstract long CumulativeConnections { get; }
41                 public abstract long CurrentConnections { get; }
42                 public abstract long ErrorsReceived { get; }
43                 public abstract long FailedConnectionAttempts { get; }
44                 public abstract long MaximumConnections { get; }
45                 public abstract long MaximumTransmissionTimeout { get; }
46                 public abstract long MinimumTransmissionTimeout { get; }
47                 public abstract long ResetConnections { get; }
48                 public abstract long ResetsSent { get; }
49                 public abstract long SegmentsReceived { get; }
50                 public abstract long SegmentsResent { get; }
51                 public abstract long SegmentsSent { get; }
52         }
53
54         class MibTcpStatistics : TcpStatistics
55         {
56                 StringDictionary dic;
57
58                 public MibTcpStatistics (StringDictionary dic)
59                 {
60                         this.dic = dic;
61                 }
62
63                 long Get (string name)
64                 {
65                         return dic [name] != null ? long.Parse (dic [name], NumberFormatInfo.InvariantInfo) : 0;
66                 }
67
68                 public override long ConnectionsAccepted {
69                         get { return Get ("PassiveOpens"); }
70                 }
71                 public override long ConnectionsInitiated {
72                         get { return Get ("ActiveOpens"); }
73                 }
74                 public override long CumulativeConnections {
75                         get { return Get ("NumConns"); }
76                 }
77                 public override long CurrentConnections {
78                         get { return Get ("CurrEstab"); }
79                 }
80                 public override long ErrorsReceived {
81                         get { return Get ("InErrs"); }
82                 }
83                 public override long FailedConnectionAttempts {
84                         get { return Get ("AttemptFails"); }
85                 }
86                 public override long MaximumConnections {
87                         get { return Get ("MaxConn"); }
88                 }
89                 public override long MaximumTransmissionTimeout {
90                         get { return Get ("RtoMax"); }
91                 }
92                 public override long MinimumTransmissionTimeout {
93                         get { return Get ("RtoMin"); }
94                 }
95                 public override long ResetConnections {
96                         get { return Get ("EstabResets"); }
97                 }
98                 public override long ResetsSent {
99                         get { return Get ("OutRsts"); }
100                 }
101                 public override long SegmentsReceived {
102                         get { return Get ("InSegs"); }
103                 }
104                 public override long SegmentsResent {
105                         get { return Get ("RetransSegs"); }
106                 }
107                 public override long SegmentsSent {
108                         get { return Get ("OutSegs"); }
109                 }
110         }
111
112 #if !MOBILE
113         class Win32TcpStatistics : TcpStatistics
114         {
115                 Win32_MIB_TCPSTATS info;
116
117                 public Win32TcpStatistics (Win32_MIB_TCPSTATS info)
118                 {
119                         this.info = info;
120                 }
121
122                 public override long ConnectionsAccepted {
123                         get { return info.PassiveOpens; }
124                 }
125
126                 public override long ConnectionsInitiated {
127                         get { return info.ActiveOpens; }
128                 }
129
130                 public override long CumulativeConnections {
131                         get { return info.NumConns; }
132                 }
133
134                 public override long CurrentConnections {
135                         get { return info.CurrEstab; }
136                 }
137
138                 public override long ErrorsReceived {
139                         get { return info.InErrs; }
140                 }
141
142                 public override long FailedConnectionAttempts {
143                         get { return info.AttemptFails; }
144                 }
145
146                 public override long MaximumConnections {
147                         get { return info.MaxConn; }
148                 }
149
150                 public override long MaximumTransmissionTimeout {
151                         get { return info.RtoMax; }
152                 }
153
154                 public override long MinimumTransmissionTimeout {
155                         get { return info.RtoMin; }
156                 }
157
158                 public override long ResetConnections {
159                         get { return info.EstabResets; }
160                 }
161
162                 public override long ResetsSent {
163                         get { return info.OutRsts; }
164                 }
165
166                 public override long SegmentsReceived {
167                         get { return info.InSegs; }
168                 }
169
170                 public override long SegmentsResent {
171                         get { return info.RetransSegs; }
172                 }
173
174                 public override long SegmentsSent {
175                         get { return info.OutSegs; }
176                 }
177         }
178
179         struct Win32_MIB_TCPSTATS
180         {
181                 public uint RtoAlgorithm;
182                 public uint RtoMin;
183                 public uint RtoMax;
184                 public uint MaxConn;
185                 public uint ActiveOpens;
186                 public uint PassiveOpens;
187                 public uint AttemptFails;
188                 public uint EstabResets;
189                 public uint CurrEstab;
190                 public uint InSegs;
191                 public uint OutSegs;
192                 public uint RetransSegs;
193                 public uint InErrs;
194                 public uint OutRsts;
195                 public uint NumConns;
196         }
197 #endif
198 }
199