2 // System.Runtime.Remoting.Channels.Http.HttpChannel
4 // Summary: Implements a wrapper class for HTTP client and server channels.
6 // Classes: public HttpChannel
9 // Martin Willemoes Hansen (mwh@sysrq.dk)
10 // Ahmad Tantawy (popsito82@hotmail.com)
11 // Ahmad Kadry (kadrianoz@hotmail.com)
12 // Hussein Mehanna (hussein_mehanna@hotmail.com)
14 // (C) 2003 Martin Willemoes Hansen
18 using System.Collections;
19 using System.Runtime.Remoting.Messaging;
22 namespace System.Runtime.Remoting.Channels.Http
25 public class HttpChannel: IChannelReceiver, IChannelSender, IChannel, IChannelReceiverHook
27 private HttpServerChannel serverChannel;
28 private HttpClientChannel clientChannel;
29 private string channelName = "http";
30 private int channelPriority = 1;
34 SetupChannel (new Hashtable(), null, null);
37 public HttpChannel (int port)
39 Hashtable prop = new Hashtable();
41 SetupChannel(prop,null,null);
44 public HttpChannel (IDictionary Properties,IClientChannelSinkProvider clientSinkProvider,IServerChannelSinkProvider serverSinkProvider)
46 SetupChannel (Properties,clientSinkProvider,serverSinkProvider);
49 private void SetupChannel (IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider)
51 clientChannel = new HttpClientChannel (properties, clientSinkProvider);
52 serverChannel = new HttpServerChannel (properties, serverSinkProvider);
54 object val = properties ["name"];
55 if (val != null) channelName = val as string;
57 val = properties ["priority"];
58 if (val != null) channelPriority = Convert.ToInt32 (val);
63 public String ChannelName
65 get { return channelName; }
68 public int ChannelPriority
70 get { return channelPriority; }
73 public String Parse(String url, out String objectURI)
75 return HttpHelper.Parse(url, out objectURI);
78 //IChannelSender Members
79 public IMessageSink CreateMessageSink(String url, Object remoteChannelData, out String objectURI)
81 return clientChannel.CreateMessageSink(url, remoteChannelData, out objectURI);
84 //IChannelReciever Members
85 public String[] GetUrlsForUri(String objectURI)
87 return serverChannel.GetUrlsForUri(objectURI);
90 public void StartListening(Object data)
92 serverChannel.StartListening(data);
95 public void StopListening(Object data)
97 serverChannel.StopListening(data);
100 public Object ChannelData
102 get { return serverChannel.ChannelData; }
105 public String ChannelScheme
107 get { return "http"; }
110 public bool WantsToListen
112 get { return serverChannel.WantsToListen; }
113 set { serverChannel.WantsToListen = value; }
116 public IServerChannelSink ChannelSinkChain
118 get { return serverChannel.ChannelSinkChain; }
121 public void AddHookChannelUri (String channelUri)
123 serverChannel.AddHookChannelUri (channelUri);