3 // Permission is hereby granted, free of charge, to any person obtaining
4 // a copy of this software and associated documentation files (the
5 // "Software"), to deal in the Software without restriction, including
6 // without limitation the rights to use, copy, modify, merge, publish,
7 // distribute, sublicense, and/or sell copies of the Software, and to
8 // permit persons to whom the Software is furnished to do so, subject to
9 // the following conditions:
11 // The above copyright notice and this permission notice shall be
12 // included in all copies or substantial portions of the Software.
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 // Peter Van Isacker (sclytrack@planetinternet.be)
\r
28 // Rafael Teixeira (rafaelteixeirabr@hotmail.com)
\r
30 // (C) 2003 Peter Van Isacker
\r
34 using System.ComponentModel;
\r
35 using System.Runtime.Serialization.Formatters;
\r
36 using System.Runtime.Serialization.Formatters.Binary;
\r
38 namespace System.Messaging
\r
40 public class BinaryMessageFormatter : IMessageFormatter, ICloneable
\r
42 private BinaryFormatter _formatter;
\r
44 public BinaryMessageFormatter ()
\r
46 _formatter = new BinaryFormatter ();
\r
49 public BinaryMessageFormatter (FormatterAssemblyStyle topObjectFormat, FormatterTypeStyle typeFormat)
\r
51 _formatter = new BinaryFormatter ();
\r
52 _formatter.AssemblyFormat = topObjectFormat;
\r
53 _formatter.TypeFormat = typeFormat;
\r
57 [MessagingDescription ("MsgTopObjectFormat")]
\r
58 public FormatterAssemblyStyle TopObjectFormat {
\r
60 return _formatter.AssemblyFormat;
\r
63 _formatter.AssemblyFormat = value;
\r
68 [MessagingDescription ("MsgTypeFormat")]
\r
69 public FormatterTypeStyle TypeFormat {
\r
71 return _formatter.TypeFormat;
\r
74 _formatter.TypeFormat = value;
\r
78 [MonoTODO ("only return true if body type is binary")]
\r
79 public bool CanRead (Message message)
\r
81 if (message == null)
\r
82 throw new ArgumentNullException ();
\r
83 return message.BodyStream.CanRead;
\r
86 [MonoTODO ("throw InvalidOperationException if message body is not binary")]
\r
87 public object Read (Message message)
\r
89 if (message == null)
\r
90 throw new ArgumentNullException ();
\r
92 return _formatter.Deserialize (message.BodyStream);
\r
95 [MonoTODO ("throw InvalidOperationException if message body is not binary")]
\r
96 public void Write (Message message, object obj)
\r
98 if (message == null)
\r
99 throw new ArgumentNullException ();
\r
101 _formatter.Serialize (message.BodyStream, obj);
\r
104 public object Clone ()
\r
106 return new BinaryMessageFormatter (TopObjectFormat, TypeFormat);
\r