CORBAChannel.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // System.Runtime.Remoting.Channels.CORBA.CORBAChannel.cs
  3. //
  4. // Author: Dietmar Maurer ([email protected])
  5. //
  6. // 2002 (C) Copyright, Ximian, Inc.
  7. //
  8. using System.Collections;
  9. using System.Runtime.Remoting.Messaging;
  10. using System.Text.RegularExpressions;
  11. namespace System.Runtime.Remoting.Channels.CORBA
  12. {
  13. public class CORBAChannel : IChannelReceiver, IChannel,
  14. IChannelSender
  15. {
  16. CORBAServerChannel svr_chnl;
  17. CORBAClientChannel cnt_chnl;
  18. string name = "corba";
  19. public CORBAChannel ()
  20. {
  21. svr_chnl = new CORBAServerChannel (0);
  22. cnt_chnl = new CORBAClientChannel ();
  23. }
  24. public CORBAChannel (int port)
  25. {
  26. svr_chnl = new CORBAServerChannel (port);
  27. cnt_chnl = new CORBAClientChannel ();
  28. }
  29. [MonoTODO]
  30. public CORBAChannel (IDictionary properties,
  31. IClientChannelSinkProvider clientSinkProvider,
  32. IServerChannelSinkProvider serverSinkProvider)
  33. {
  34. throw new NotImplementedException ();
  35. }
  36. public object ChannelData
  37. {
  38. get {
  39. return svr_chnl.ChannelData;
  40. }
  41. }
  42. public string ChannelName
  43. {
  44. get {
  45. return name;
  46. }
  47. }
  48. public int ChannelPriority
  49. {
  50. get {
  51. return svr_chnl.ChannelPriority;
  52. }
  53. }
  54. public IMessageSink CreateMessageSink (string url,
  55. object remoteChannelData,
  56. out string objectURI)
  57. {
  58. return cnt_chnl.CreateMessageSink (url, remoteChannelData, out objectURI);
  59. }
  60. public string[] GetUrlsForUri (string objectURI)
  61. {
  62. return svr_chnl.GetUrlsForUri (objectURI);
  63. }
  64. public string Parse (string url, out string objectURI)
  65. {
  66. return svr_chnl.Parse (url, out objectURI);
  67. }
  68. public void StartListening (object data)
  69. {
  70. svr_chnl.StartListening (data);
  71. }
  72. public void StopListening (object data)
  73. {
  74. svr_chnl.StopListening (data);
  75. }
  76. internal static string ParseCORBAURL (string url, out string objectURI, out int port)
  77. {
  78. // format: "corba://host:port/path/to/object"
  79. objectURI = null;
  80. port = 0;
  81. Match m = Regex.Match (url, "corba://([^:]+):([0-9]+)(/.*)");
  82. if (!m.Success)
  83. return null;
  84. string host = m.Groups[1].Value;
  85. string port_str = m.Groups[2].Value;
  86. objectURI = m.Groups[3].Value;
  87. port = Convert.ToInt32 (port_str);
  88. return host;
  89. }
  90. }
  91. }