Example #1
0
        private void SaveCache(byte[] buffer, int offset, int length, bool isBody)
        {
            if (this.PipesChain.ChainState.ContainsKey(HttpTracerPipe.STATE_KEY) == false)
            {
                return;
            }

            if ((outStreamBody == null || outStreamHeader == null) && this.Configuration is EngineSuProxyConfiguration)
            {
                try
                {
                    ResponseHeaderDumpFilesInfo header = new ResponseHeaderDumpFilesInfo((EngineSuProxyConfiguration)this.Configuration);
                    ResponseBodyDumpFilesInfo   body   = new ResponseBodyDumpFilesInfo((EngineSuProxyConfiguration)this.Configuration);

                    String guid = null;

                    do
                    {
                        guid = Guid.NewGuid().ToString().Replace("-", "").ToLower();
                    } while (header.Exist(guid) || body.Exist(guid));

                    Stream b = body.Open(FileAccess.Write, guid);
                    if (b != null)
                    {
                        outStreamBody = new BinaryWriter(b);
                    }

                    Stream h = header.Open(FileAccess.Write, guid);
                    if (h != null)
                    {
                        outStreamHeader = new BinaryWriter(h);
                    }

                    HttpTransaction httpTranc = (HttpTransaction)this.PipesChain.ChainState[HttpTracerPipe.STATE_KEY];
                    httpTranc.FileGUID = guid;
                }
                catch
                {
                }
            }
            try
            {
                if (isBody && outStreamBody != null)
                {
                    outStreamBody.Write(buffer, offset, length);
                }
                else if (outStreamHeader != null)
                {
                    outStreamHeader.Write(buffer, offset, length);
                }
            }
            catch
            {
            }
        }