Example #1
0
        /// <summary>
        /// Create a new <see cref="HttpWorkerRequest"/> from data contained in this
        /// <see cref="BaseRequest"/>. The returned object must also implement
        /// <see cref="IForeignData"/> interface. <see cref="BaseRequest"/> stores
        /// the TextWriter in foreign data of the worker request, to use it later in
        /// <see cref="ExtractResponse"/>.
        /// </summary>
        /// <returns>A new <see cref="HttpWorkerRequest"/>.</returns>
        /// <seealso cref="HttpWorkerRequest"/>
        /// <seealso cref="IForeignData"/>
        /// <seealso cref="HttpWorkerRequest"/>
        /// <seealso cref="ExtractResponse"/>
        public virtual HttpWorkerRequest CreateWorkerRequest()
        {
            StringWriter      wr = new StringWriter();
            BaseWorkerRequest br = CreateBaseWorkerRequest(wr);

            ((IForeignData)br) [GetType()] = wr;
            return(br);
        }
Example #2
0
        /// <summary>
        /// Extracts the response from the completed <see cref="System.Web.HttpWorkerRequest"/>
        /// and returns a new <see cref="Response"/> instance. This method works with HttpWorkerRequest
        /// created with <see cref="CreateWorkerRequest"/>.
        /// </summary>
        /// <param name="request">this must be the same request that was returned by
        /// CreateWorkerRequest</param>
        /// <returns>New <see cref="Response"/> instance, containing the results of the
        /// request.</returns>
        /// <seealso cref="System.Web.HttpWorkerRequest"/>
        /// <seealso cref="Response"/>
        public virtual Response ExtractResponse(HttpWorkerRequest request)
        {
            BaseWorkerRequest br = (BaseWorkerRequest)request;
            IForeignData      d  = (IForeignData)br;
            TextWriter        wr = (TextWriter)d[GetType()];

            d[GetType()] = null;
            wr.Close();
            Response r = new Response();

            r.Body              = wr.ToString();
            r.StatusCode        = br.StatusCode;
            r.StatusDescription = br.StatusDescription;
            return(r);
        }