public void RemoveReceiveEndpoint(string Url)
        {
            if (!this.Initialized)
            {
                throw new NotInitialized();
            }

            ReceiverEndpoint endpoint = (ReceiverEndpoint)this.endpoints[Url];

            if (null == endpoint)
            {
                return;
            }

            this.endpoints.Remove(Url);
            endpoint.Dispose();
        }
        public void UpdateEndpointConfig(string Url, IPropertyBag pConfig, IPropertyBag pBizTalkConfig)
        {
            if (!this.Initialized)
            {
                throw new NotInitialized();
            }

            ReceiverEndpoint endpoint = (ReceiverEndpoint)this.endpoints[Url];

            if (null == endpoint)
            {
                throw new EndpointNotExists(Url);
            }

            //  delegate the update call to the endpoint instance itself
            endpoint.Update(pConfig, pBizTalkConfig, this.HandlerPropertyBag);
        }
        //  IBTTransportConfig
        public void AddReceiveEndpoint(string Url, IPropertyBag pConfig, IPropertyBag pBizTalkConfig)
        {
            if (!this.Initialized)
            {
                throw new NotInitialized();
            }

            if (this.endpoints.ContainsKey(Url))
            {
                throw new EndpointExists(Url);
            }

            ReceiverEndpoint endpoint = (ReceiverEndpoint)Activator.CreateInstance(this.endpointType);

            if (null == endpoint)
            {
                throw new CreateEndpointFailed(this.endpointType.FullName, Url);
            }

            endpoint.Open(Url, pConfig, pBizTalkConfig, this.HandlerPropertyBag, this.TransportProxy, this.TransportType, this.PropertyNamespace, this.control);

            this.endpoints[Url] = endpoint;
        }