[System] Removal of the NET_2_0 in the source code
[mono.git] / mcs / class / System / System.Net.NetworkInformation / UdpStatistics.cs
index 8055046095b21f7030579444aed1e8debe1bf675..6126b93d79908833e023602d7b6de3cb0916f5a1 100644 (file)
@@ -1,10 +1,11 @@
 //
 // System.Net.NetworkInformation.UdpStatistics
 //
-// Author:
+// Authors:
 //     Gonzalo Paniagua Javier (gonzalo@novell.com)
+//     Atsushi Enomoto (atsushi@ximian.com)
 //
-// Copyright (c) 2006 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2006-2007 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
@@ -25,7 +26,9 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if NET_2_0
+using System.Collections.Specialized;
+using System.Globalization;
+
 namespace System.Net.NetworkInformation {
        public abstract class UdpStatistics {
                protected UdpStatistics ()
@@ -38,6 +41,75 @@ namespace System.Net.NetworkInformation {
                public abstract long IncomingDatagramsWithErrors { get; }
                public abstract int UdpListeners { get; }
        }
+
+       class MibUdpStatistics : UdpStatistics
+       {
+               StringDictionary dic;
+
+               public MibUdpStatistics (StringDictionary dic)
+               {
+                       this.dic = dic;
+               }
+
+               long Get (string name)
+               {
+                       return dic [name] != null ? long.Parse (dic [name], NumberFormatInfo.InvariantInfo) : 0;
+               }
+
+               public override long DatagramsReceived {
+                       get { return Get ("InDatagrams"); }
+               }
+               public override long DatagramsSent {
+                       get { return Get ("OutDatagrams"); }
+               }
+               public override long IncomingDatagramsDiscarded {
+                       get { return Get ("NoPorts"); }
+               }
+               public override long IncomingDatagramsWithErrors {
+                       get { return Get ("InErrors"); }
+               }
+               public override int UdpListeners {
+                       get { return (int) Get ("NumAddrs"); }
+               }
+       }
+
+       class Win32UdpStatistics : UdpStatistics
+       {
+               Win32_MIB_UDPSTATS info;
+
+               public Win32UdpStatistics (Win32_MIB_UDPSTATS info)
+               {
+                       this.info = info;
+               }
+
+               public override long DatagramsReceived {
+                       get { return info.InDatagrams; }
+               }
+
+               public override long DatagramsSent {
+                       get { return info.OutDatagrams; }
+               }
+
+               public override long IncomingDatagramsDiscarded {
+                       get { return info.NoPorts; }
+               }
+
+               public override long IncomingDatagramsWithErrors {
+                       get { return info.InErrors; }
+               }
+
+               public override int UdpListeners {
+                       get { return info.NumAddrs; }
+               }
+       }
+
+       struct Win32_MIB_UDPSTATS
+       {
+               public uint InDatagrams;
+               public uint NoPorts;
+               public uint InErrors;
+               public uint OutDatagrams;
+               public int NumAddrs;
+       }
 }
-#endif