コード例 #1
0
 public GatewayStream(IServerStream serverStream, IManagedDataHandler[] handlers)
 {
     _disposed     = false;
     _handlers     = handlers;
     _serverStream = serverStream;
     _serverStream.ProcessRequest += Read;
     //dataMarker + dataSize
 }
コード例 #2
0
 /// <summary>
 /// Gets output stream.
 /// </summary>
 protected override Stream GetOutputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
 {
     if (config.EnabledForExtensions && config.GzipRequesting)
     {
         SetResponseHeader(serverStream, HttpHelper.ContentEncodingHeader, "gzip");
     }
     return(base.GetOutputStream(config, serverStream));
 }
コード例 #3
0
 /// <summary>
 /// Gets output stream.
 /// </summary>
 protected virtual Stream GetOutputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
 {
     Stream outputStream = serverStream.OutputStream;
     if (config.EnabledForExtensions && config.GzipRequesting)
         return new GZipStream(outputStream, CompressionMode.Compress);
     else
         return outputStream;
 }
コード例 #4
0
 /// <summary>
 /// Gets input stream.
 /// </summary>
 protected virtual Stream GetInputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
 {
     Stream inputStream = serverStream.InputStream;
     if (config.EnabledForExtensions && config.GzipCompressing)
         return new GZipStream(inputStream, CompressionMode.Decompress);
     else
         return inputStream;
 }
コード例 #5
0
 public void Run(IServerStream serverStream)
 {
     lock (_streamLock)
     {
         if (_serverStream == null)
         {
             _serverStream = serverStream;
             _serverStream.ProcessRequest += OnProcessRequest;
         }
     }
 }
コード例 #6
0
        /// <summary>
        /// Gets output stream.
        /// </summary>
        protected virtual Stream GetOutputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
        {
            Stream outputStream = serverStream.OutputStream;

            if (config.EnabledForExtensions && config.GzipRequesting)
            {
                return(new GZipStream(outputStream, CompressionMode.Compress));
            }
            else
            {
                return(outputStream);
            }
        }
コード例 #7
0
        /// <summary>
        /// Gets input stream.
        /// </summary>
        protected virtual Stream GetInputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
        {
            Stream inputStream = serverStream.InputStream;

            if (config.EnabledForExtensions && config.GzipCompressing)
            {
                return(new GZipStream(inputStream, CompressionMode.Decompress));
            }
            else
            {
                return(inputStream);
            }
        }
コード例 #8
0
 public void Start()
 {
     lock (_streams)
     {
         for (int i = 0; i < _gatewaySettings.StreamsCount; i++)
         {
             IServerStream serverStream  = _streamFactory.CreateDataStream();
             GatewayStream gatewayStream = new GatewayStream(serverStream, _handlers);
             _streams.Add(gatewayStream);
             gatewayStream.Start();
         }
     }
 }
コード例 #9
0
        protected override void RunInternal()
        {
            _frameworks       = new FrameworkCollection(Catalog.Frameworks, ExportLoader);
            _profilingTypes   = new ProfilingTypeCollection(Catalog.ProfilingTypes, ExportLoader);
            _profilingTargets = new ProfilingTargetCollection(Catalog.ProfilingTargets, ExportLoader);
            _configurations   = new ConfigurationCollection(_profilingTargets, _frameworks, this);
            _sessions         = new SessionCollection(this);
            _requestServer    = new RequestServer();

            _requestServer.RegisterHandler(new StartProfilingSessionRequestHandler(
                                               _configurations, _sessions, _frameworks, _profilingTypes, _profilingTargets));

            //TODO: Host must listen all possible types of streams (NamePipes, SharedMemory, RPC) _
            //TODO: _ because agents may use different transports, depending on apps they profile
            IServerStream serverStream = Connector.Native.StreamFactory.CreateInvokeStream();

            _requestServer.Run(serverStream);

            ServiceContainer.Register(new Remote.IO.FileSystemAccessor(true));
        }
コード例 #10
0
        /// <summary>
        /// Executes requests from streams.
        /// </summary>
        /// <param name="config"></param>
        /// <param name="serverStream">the <see cref="IServerStream"/> to process</param>
        public void Execute(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
        {
            Stream inputStream;
            XmlRpcResponse response = new XmlRpcResponse();

            try
            {
                inputStream = GetInputStream(config, serverStream);
                IXmlRpcRequest request = GetRequest(config, inputStream);
                response.Result = Execute(request);
            }
            catch (XmlRpcException ex)
            {
                response.Fault = ex.Fault;
            }
            catch (Exception ex)
            {
                response.Fault = new XmlRpcFault(0, ex.Message, ex);
            }

            Stream outputStream = GetOutputStream(config, serverStream);
            WriteResponse(config, outputStream, response);
        }
コード例 #11
0
        /// <summary>
        /// Executes requests from streams.
        /// </summary>
        /// <param name="config"></param>
        /// <param name="serverStream">the <see cref="IServerStream"/> to process</param>
        public void Execute(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
        {
            Stream         inputStream;
            XmlRpcResponse response = new XmlRpcResponse();

            try
            {
                inputStream = GetInputStream(config, serverStream);
                IXmlRpcRequest request = GetRequest(config, inputStream);
                response.Result = Execute(request);
            }
            catch (XmlRpcException ex)
            {
                response.Fault = ex.Fault;
            }
            catch (Exception ex)
            {
                response.Fault = new XmlRpcFault(0, ex.Message, ex);
            }

            Stream outputStream = GetOutputStream(config, serverStream);

            WriteResponse(config, outputStream, response);
        }
コード例 #12
0
 private void SetResponseHeader(IServerStream serverStream, String header, String value)
 {
     ((HttpStream)serverStream).Response.AppendHeader(header, value);
 }
コード例 #13
0
 private void SetResponseHeader(IServerStream serverStream, String header, String value)
 {
     ((HttpStream)serverStream).Response.AppendHeader(header, value);
 }
コード例 #14
0
 /// <summary>
 /// Gets output stream.
 /// </summary>
 protected override Stream GetOutputStream(IXmlRpcStreamRequestConfig config, IServerStream serverStream)
 {
     if (config.EnabledForExtensions && config.GzipRequesting)
         SetResponseHeader(serverStream, HttpHelper.ContentEncodingHeader, "gzip");
     return base.GetOutputStream(config, serverStream);
 }