a969c926374622a4b4ca1da71ac829ab92bfe1b3
[mono.git] / mcs / class / corlib / System.Runtime.Serialization.Formatters.Binary / BinaryFormatter.cs
1 // BinaryFormatter.cs
2 //
3 // Author:
4 //      Dick Porter (dick@ximian.com)
5 //
6 // (C) 2002 Ximian, Inc.  http://www.ximian.com
7
8 using System.Runtime.Serialization.Formatters;
9 using System.Runtime.Serialization;
10 using System.IO;
11 using System.Runtime.Remoting.Messaging;
12
13 namespace System.Runtime.Serialization.Formatters.Binary {
14         public sealed class BinaryFormatter : IRemotingFormatter, IFormatter 
15         {
16                 private FormatterAssemblyStyle assembly_format;
17                 private SerializationBinder binder;
18                 private StreamingContext context;
19                 private ISurrogateSelector surrogate_selector;
20                 private FormatterTypeStyle type_format;
21                 
22                 public BinaryFormatter()
23                 {
24                         surrogate_selector=null;
25                         context=new StreamingContext(StreamingContextStates.All);
26                 }
27                 
28                 public BinaryFormatter(ISurrogateSelector selector, StreamingContext context)
29                 {
30                         surrogate_selector=selector;
31                         this.context=context;
32                 }
33
34                 public FormatterAssemblyStyle AssemblyFormat
35                 {
36                         get {
37                                 return(assembly_format);
38                         }
39                         set {
40                                 assembly_format=value;
41                         }
42                 }
43
44                 public SerializationBinder Binder
45                 {
46                         get {
47                                 return(binder);
48                         }
49                         set {
50                                 binder=value;
51                         }
52                 }
53
54                 public StreamingContext Context 
55                 {
56                         get {
57                                 return(context);
58                         }
59                         set {
60                                 context=value;
61                         }
62                 }
63                 
64                 public ISurrogateSelector SurrogateSelector 
65                 {
66                         get {
67                                 return(surrogate_selector);
68                         }
69                         set {
70                                 surrogate_selector=value;
71                         }
72                 }
73                 
74                 public FormatterTypeStyle TypeFormat 
75                 {
76                         get {
77                                 return(type_format);
78                         }
79                         set {
80                                 type_format=value;
81                         }
82                 }
83
84                 [MonoTODO]
85                 public object Deserialize(Stream serializationStream)
86                 {
87                         if(serializationStream==null) {
88                                 throw new ArgumentNullException("serializationStream is null");
89                         }
90                         if(serializationStream.CanSeek &&
91                            serializationStream.Length==0) {
92                                 throw new SerializationException("serializationStream supports seeking, but its length is 0");
93                         }
94                         
95                         return(null);
96                 }
97
98                 [MonoTODO]
99                 public object Deserialize(Stream serializationStream, HeaderHandler handler) 
100                 {
101                         if(serializationStream==null) {
102                                 throw new ArgumentNullException("serializationStream is null");
103                         }
104                         if(serializationStream.CanSeek &&
105                            serializationStream.Length==0) {
106                                 throw new SerializationException("serializationStream supports seeking, but its length is 0");
107                         }
108                         
109                         return(null);
110                 }
111                 
112                 [MonoTODO]
113                 public object DeserializeMethodResponse(Stream serializationStream, HeaderHandler handler, IMethodCallMessage methodCallmessage)
114                 {
115                         if(serializationStream==null) {
116                                 throw new ArgumentNullException("serializationStream is null");
117                         }
118                         if(serializationStream.CanSeek &&
119                            serializationStream.Length==0) {
120                                 throw new SerializationException("serializationStream supports seeking, but its length is 0");
121                         }
122                         
123                         return(null);
124                 }
125
126                 [MonoTODO]
127                 public void Serialize(Stream serializationStream, object graph)
128                 {
129                         if(serializationStream==null) {
130                                 throw new ArgumentNullException("serializationStream is null");
131                         }
132                 }
133
134                 [MonoTODO]
135                 public void Serialize(Stream serializationStream, object graph, Header[] headers)
136                 {
137                         if(serializationStream==null) {
138                                 throw new ArgumentNullException("serializationStream is null");
139                         }
140                 }
141         }
142 }