예제 #1
0
 /// <summary>
 /// Initializes HttpClient for use with proxy
 /// </summary>
 /// <param name="settings"></param>
 /// <param name="logger"></param>
 /// <param name="serverChannel"></param>
 public HttpClient(HttpClientSettings settings, InstanceLogger logger, IServerChannel serverChannel)
 {
     this.setttings         = settings;
     client                 = new TcpClient(settings.TcpSettings);
     client.ChannelCreated += channelCreatedHandler;
     client.ErrorOccured   += client_ErrorOccured;
     this.logger            = logger;
     this.serverChannel     = serverChannel as HttpServerChannel;
 }
예제 #2
0
        private void channelCreatedHandler(object sender, IServerChannel e)
        {
            var channel = new HttpServerChannel(e, logger);
            var ev      = ChannelCreated;

            if (ev != null)
            {
                ev(this, channel);
            }
        }
예제 #3
0
        public HttpClientChannel(IClientChannel channel, InstanceLogger logger, HttpServerChannel serverChannel = null)
        {
            var sharedLockChannel = serverChannel != null?serverChannel.GetInnerChannel() : null;

            if (channel.GetType() != typeof(LockableClientChannel))
            {
                channel = new LockableClientChannel(channel, sharedLockChannel);
            }
            this.channel = (LockableClientChannel)channel;
            this.id      = channel.ID;
            this.name    = channel.Name;
            handlers     = new IChannelExtensions.ChannelHandlers
            {
                ChannelClosed    = channelClosedHandler,
                ChannelReady     = channelReadyHandler,
                ResponseReceived = responseReceivedHandler,
                RequestSent      = requestSentHandler,
                ErrorOccured     = errorOccuredHandler,
            };
            channel.BindAllEvents(handlers);
            parser      = new HttpMessageParser(logger, true);
            this.logger = logger;
        }