2002-08-21 Dietmar Maurer <dietmar@ximian.com>
[mono.git] / mcs / class / System.Runtime.Remoting / System.Runtime.Remoting.Channels / BinaryClientFormatterSink.cs
1 //
2 // System.Runtime.Remoting.Channels.BinaryClientFormatterSink.cs
3 //
4 // Author: Rodrigo Moya (rodrigo@ximian.com)
5 //         Dietmar Maurer (dietmar@ximian.com)
6 //
7 // 2002 (C) Copyright, Ximian, Inc.
8 //
9
10 using System.Collections;
11 using System.IO;
12 using System.Runtime.Remoting.Messaging;
13
14 namespace System.Runtime.Remoting.Channels
15 {
16         public class BinaryClientFormatterSink : IClientFormatterSink,
17                 IMessageSink, IClientChannelSink, IChannelSinkBase
18         {
19                 private IClientChannelSink nextInChain;
20                 
21                 public BinaryClientFormatterSink (IClientChannelSink nextSink)
22                 {
23                         nextInChain = nextSink;
24                 }
25
26                 public IClientChannelSink NextChannelSink
27                 {
28                         get {
29                                 return nextInChain;
30                         }
31                 }
32
33                 public IMessageSink NextSink
34                 {
35                         get {
36                                 return (IMessageSink) nextInChain;
37                         }
38                 }
39
40                 public IDictionary Properties
41                 {
42                         get {
43                                 return null;
44                         }
45                 }
46
47                 [MonoTODO]
48                 public IMessageCtrl AsyncProcessMessage (IMessage msg,
49                                                          IMessageSink replySink)
50                 {
51                         throw new NotImplementedException ();
52                 }
53
54                 [MonoTODO]
55                 public void AsyncProcessRequest (IClientChannelSinkStack sinkStack,
56                                                  IMessage msg,
57                                                  ITransportHeaders headers,
58                                                  Stream stream)
59                 {
60                         throw new NotImplementedException ();
61                 }
62
63                 [MonoTODO]
64                 public void AsyncProcessResponse (IClientResponseChannelSinkStack sinkStack,
65                                                   object state,
66                                                   ITransportHeaders headers,
67                                                   Stream stream)
68                 {
69                         throw new NotImplementedException ();
70                 }
71
72                 public Stream GetRequestStream (IMessage msg,
73                                                 ITransportHeaders headers)
74                 {
75                         return null;
76                 }
77
78                 public void ProcessMessage (IMessage msg,
79                                             ITransportHeaders requestHeaders,
80                                             Stream requestStream,
81                                             out ITransportHeaders responseHeaders,
82                                             out Stream responseStream)
83                 {
84                         nextInChain.ProcessMessage (msg, requestHeaders, requestStream,
85                                                     out responseHeaders, out responseStream);
86                 }
87
88                 [MonoTODO]
89                 public IMessage SyncProcessMessage (IMessage msg)
90                 {
91                         ITransportHeaders response_headers;
92                         Stream response_stream;
93                         
94                         // fixme: use nextInChain.GetRequestStream() ??
95                         Stream out_stream = new MemoryStream ();
96
97                         // fixme: serialize msg to the stream
98
99                         ProcessMessage (msg, null, out_stream, out response_headers, out response_stream);
100
101                         // fixme: deserialize response_stream
102                         IMessage result = null;
103
104                         return null;
105                 }
106         }
107 }