Example #1
0
        void BuildScriptDispatcher(ServiceEndpoint endpoint, EndpointDispatcher ed, string subPath, bool debug)
        {
            var instance = new InteropScriptService(endpoint.Contract.ContractType, endpoint.Address.Uri.ToString(), debug);

            var cdOrg         = ed.ChannelDispatcher;
            var baseUriString = endpoint.ListenUri.ToString();
            var uri           = new Uri(String.Concat(baseUriString, baseUriString [baseUriString.Length - 1] == '/' ? String.Empty : "/", subPath));
            var listener      = endpoint.Binding.BuildChannelListener <IReplyChannel> (uri);
            var cd            = new ChannelDispatcher(listener, String.Empty);

            cd.MessageVersion = MessageVersion.None;

            cd.Endpoints.Add(new EndpointDispatcher(new EndpointAddress(uri), "InteropScriptService", String.Empty)
            {
                ContractFilter = new MatchAllMessageFilter()
            });

            var dr  = cd.Endpoints [0].DispatchRuntime;
            var dop = new DispatchOperation(dr, "Get", "*", "*");

            dop.DeserializeRequest        = false;
            dop.SerializeReply            = false;
            dop.Invoker                   = new DummyInvoker(instance);
            dr.UnhandledDispatchOperation = dop;
            dr.InstanceContextProvider    = new SingletonInstanceContextProvider(new InstanceContext(cdOrg.Host, instance));

            var host = ed.ChannelDispatcher.Host;

            host.ChannelDispatchers.Add(cd);
        }
			public DummyInvoker (InteropScriptService instance)
			{
				this.instance = instance;
			}
		void BuildScriptDispatcher (ServiceEndpoint endpoint, EndpointDispatcher ed, string subPath, bool debug)
		{
			var instance = new InteropScriptService (endpoint.Contract.ContractType, endpoint.Address.Uri.ToString (), debug);

			var cdOrg = ed.ChannelDispatcher;
			var baseUriString = endpoint.ListenUri.ToString ();
			var uri = new Uri (String.Concat (baseUriString, baseUriString [baseUriString.Length - 1] == '/' ? String.Empty : "/", subPath));
			var listener = endpoint.Binding.BuildChannelListener<IReplyChannel> (uri);
			var cd = new ChannelDispatcher (listener, String.Empty);

			cd.MessageVersion = MessageVersion.None;
			cd.Endpoints.Add (new EndpointDispatcher (new EndpointAddress (uri), "InteropScriptService", String.Empty)
				{ ContractFilter = new MatchAllMessageFilter () });

			var dr = cd.Endpoints [0].DispatchRuntime;
			var dop = new DispatchOperation (dr, "Get", "*", "*");
			dop.DeserializeRequest = false;
			dop.SerializeReply = false;
			dop.Invoker = new DummyInvoker (instance);
			dr.UnhandledDispatchOperation = dop;
			dr.InstanceContextProvider = new SingletonInstanceContextProvider (new InstanceContext (cdOrg.Host, instance));

			var host = ed.ChannelDispatcher.Host;
			host.ChannelDispatchers.Add (cd);
		}
Example #4
0
 public DummyInvoker(InteropScriptService instance)
 {
     this.instance = instance;
 }