Ejemplo n.º 1
0
 protected virtual void OnChannelCreated(IProxyChannel channel)
 {
     if (ChannelCreated != null)
     {
         ChannelCreated(this, channel);
     }
 }
Ejemplo n.º 2
0
        private void ConnectService()
        {
            lock (_proxyChannelLocker)
            {
                if (_proxyChannel != null)
                {
                    ReleaseChannel();
                }

                CreateChannel();
            }

            if (_proxyChannel != null && _proxyChannel.State == CommunicationState.Created)
            {
                _proxyChannel.Open();
            }
            else
            {
                if (_proxyChannel != null && _proxyChannel.State != CommunicationState.Created)
                {
                    _proxyChannel = null;
                }
            }

            if (_proxyChannel != null)
            {
                _proxyChannel.InnerChannel.Faulted += new EventHandler(OnChannelCommunnicationFaulted);
            }
        }
Ejemplo n.º 3
0
        protected void ReleaseChannel()
        {
            if (_proxyChannel != null)
            {
                lock (_proxyChannelLocker)
                {
                    try
                    {
                        if (_proxyChannel != null)
                        {
                            try
                            {
                                _proxyChannel.InnerChannel.Faulted -= new EventHandler(OnChannelCommunnicationFaulted);
                                _proxyChannel.Close();
                            }
                            catch (Exception ex)
                            {
                                ExceptionHandler.Handle(ex);
                                _proxyChannel.Abort();
                            }

                            (_proxyChannel as IDisposable).Dispose();
                        }
                    }
                    catch (Exception ex)
                    {
                        ExceptionHandler.Handle(ex);
                    }
                    finally
                    {
                        _proxyChannel = null;
                    }
                }
            }
        }
Ejemplo n.º 4
0
 public LockableProxyChannel(IProxyChannel innerChannel)
     : base(innerChannel)
 {
     InnerChannel                   = innerChannel;
     InnerChannel.RequestSent      += InnerChannel_RequestSent;
     InnerChannel.RequestReceived  += InnerChannel_RequestReceived;
     InnerChannel.ResponseReceived += InnerChannel_ResponseReceived;
     InnerChannel.ResponseSent     += InnerChannel_ResponseSent;
 }
Ejemplo n.º 5
0
        protected override IDataStream responseMapper(IProxyChannel c, IDataStream s)
        {
            var channel = c as DefaultProxyChannel;
            var data    = s as HttpData;

            if (channel != null && data != null && data.Code == 101)
            {
                string upgrade;
                if (data.Headers.TryGetValue("Upgrade", out upgrade) && upgrade.ToLower() == "websocket")
                {
                    channel.ReplaceInnerChannels(upgradeServer, upgradeClient);
                }
            }
            return(s);
        }
Ejemplo n.º 6
0
        public static IProxyChannel <TContractType> CreateDuplexProxyChannel <TContractType>(InstanceContext context) where TContractType : class
        {
            IProxyChannel <TContractType> factory = CreateProxyDuplexChannel <TContractType>(context, null, null);

            return(factory);
        }
Ejemplo n.º 7
0
        public static IProxyChannel <TContractType> CreateProxyChannel <TContractType>(string hostName) where TContractType : class
        {
            IProxyChannel <TContractType> factory = CreateProxyChannel <TContractType>(null, hostName);

            return(factory);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Maps request from client to request sent to server
 /// </summary>
 /// <param name="c"></param>
 /// <param name="s">request from client</param>
 /// <returns>modified request or null if the request is to be dropped</returns>
 protected virtual IDataStream requestMapper(IProxyChannel c, IDataStream s)
 {
     return(s);
 }
Ejemplo n.º 9
0
 protected virtual void CreateChannel()
 {
     _proxyChannel = ProxyChannelFactory.CreateProxyChannel <TContract>(_contract.HostName);
 }
Ejemplo n.º 10
0
 private void handleTypedChannelCreated(object sender, IProxyChannel c)
 {
     handleChannelCreated(sender, c);
 }