2003-03-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / Mono.Posix / Mono.Posix / UnixEndPoint.cs
1 //
2 // Mono.Posix.UnixEndPoint: EndPoint derived class for AF_UNIX family sockets.
3 //
4 // Authors:
5 //      Gonzalo Paniagua Javier (gonzalo@ximian.com)
6 //
7 // (C) 2003 Ximian, Inc (http://www.ximian.com)
8 //
9 using System;
10 using System.Net;
11 using System.Net.Sockets;
12 using System.Text;
13
14 namespace Mono.Posix
15 {
16         [Serializable]
17         public class UnixEndPoint : EndPoint
18         {
19                 string filename;
20                 
21                 public UnixEndPoint (string filename)
22                 {
23                         this.filename = filename;
24                 }
25                 
26                 public override AddressFamily AddressFamily {
27                         get { return AddressFamily.Unix; }
28                 }
29
30                 public override EndPoint Create (SocketAddress socketAddress)
31                 {
32                         int size = socketAddress.Size;
33                         byte [] bytes = new byte [size];
34                         for (int i = 0; i < size; i++) {
35                                 bytes [i] = socketAddress [i];
36                         }
37
38                         string name = Encoding.Default.GetString (bytes);
39                         return new UnixEndPoint (name);
40                 }
41
42                 public override SocketAddress Serialize ()
43                 {
44                         byte [] bytes = Encoding.Default.GetBytes (filename);
45                         SocketAddress sa = new SocketAddress (AddressFamily, bytes.Length + 2);
46                         // sa [0] -> family low byte, sa [1] -> family high byte
47                         for (int i = 0; i < bytes.Length; i++)
48                                 sa [i + 2] = bytes [i];
49
50                         return sa;
51                 }
52         }
53 }
54