示例#1
0
        private void GetResponseCallback(IAsyncResult ar)
        {
            TransportClass oTransportClass = ar.AsyncState as TransportClass;

            try
            {
                HttpWebResponse response      = (HttpWebResponse)oTransportClass.m_oWebRequest.EndGetResponse(ar);
                Int64           ContentLength = 0;
                if (!Int64.TryParse(response.Headers.Get("Content-Length"), out ContentLength))
                {
                    ContentLength = 0;
                }
                if (m_nMaxSize > 0 && ContentLength > m_nMaxSize)
                {
                    _log.ErrorFormat("Downloaded object size {0} exceed max {1}", ContentLength, m_nMaxSize);
                    oTransportClass.m_eError = ErrorTypes.WebRequest;
                    ClearAndCallback(oTransportClass);
                }
                else
                {
                    Stream streamResponse = response.GetResponseStream();
                    AsyncContextReadOperation oAsyncContextReadOperation = new AsyncContextReadOperation(m_nMaxSize);
                    oTransportClass.m_oHttpWebResponse           = response;
                    oTransportClass.m_oStream                    = streamResponse;
                    oTransportClass.m_oAsyncContextReadOperation = oAsyncContextReadOperation;
                    oAsyncContextReadOperation.ReadContextBegin(streamResponse, ReadContextCallback, oTransportClass);
                }
            }
            catch (Exception e)
            {
                _log.Error("Exception catched in GetRequestStreamCallback:", e);
                oTransportClass.m_eError = ErrorTypes.WebRequest;
                ClearAndCallback(oTransportClass, true);
            }
        }
    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
    {
        bool bStartAsync = false;
        ErrorTypes eError = ErrorTypes.Unknown;       
        try
        {
            _log.Info("Starting process request...");
            _log.Info(context.Request.QueryString.ToString());
                      
            string vKey = context.Request.QueryString["vkey"];
            string sKey = context.Request.QueryString["key"];

            if (null != sKey && false == string.IsNullOrEmpty(sKey))
            {
                eError = ErrorTypes.NoError;

                if (ErrorTypes.NoError == eError)
                {
                    bStartAsync = true;
                    Storage oStorage = new Storage();
                    string sTempKey = "temp_" + sKey;
                    string sFilename = sKey + ".tmp";
                    string sPath = sTempKey + "/" + sFilename;
                    AsyncContextReadOperation asynch = new AsyncContextReadOperation();
                    TransportClass oTransportClass = new TransportClass(context, cb, oStorage, asynch, sPath, sTempKey, sFilename);
                    asynch.ReadContextBegin(context.Request.InputStream, ReadContextCallback, oTransportClass);
                }
            }
        }
        catch(Exception e)
        {
            eError = ErrorTypes.Unknown;
            
            _log.Error(context.Request.QueryString.ToString());
            _log.Error("Exeption: ", e);
        }
        finally
        {
            if (ErrorTypes.NoError != eError)
                writeXml(context, null, null, null, eError);
        }
        
        TransportClass oTempTransportClass = new TransportClass(context, cb, null, null, null, null, null);
        if (false == bStartAsync)
            cb(new AsyncOperationData(oTempTransportClass));
        return new AsyncOperationData(oTempTransportClass);
    }
    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
    {
        TransportClassMainAshx oTransportClassMainAshx = new TransportClassMainAshx(context, cb);
        AsyncContextReadOperation asynch = new AsyncContextReadOperation();
        TransportClassContextRead oTransportClassContextRead = new TransportClassContextRead(oTransportClassMainAshx, asynch);
        try
        {
            asynch.ReadContextBegin(context.Request.InputStream, ReadContext, oTransportClassContextRead);
        }
        catch(Exception e)
        {
            OutputCommand oOutputCommand = new OutputCommand(ErrorTypes.Unknown);
            WriteOutputCommand(new TransportClassMainAshx(context, cb), oOutputCommand);

            _log.Error("Exception catched in BeginProcessRequest:", e);
        }
        return new AsyncOperationData(extraData);
    }
 private void GetMediaXmlCallbackProcess(TransportClass1 oTransportClass1, Dictionary<string, string> aMediaXmlMapHash, Dictionary<string, string> aMediaXmlMapFilename)
 {
     AsyncContextReadOperation oAsyncContextReadOperation = new AsyncContextReadOperation();
     TransportClass2 oTransportClass2 = new TransportClass2(oTransportClass1, aMediaXmlMapHash, aMediaXmlMapFilename, oAsyncContextReadOperation);
     HttpPostedFile oCurrentFile = (HttpPostedFile)oTransportClass1.m_oFiles[(string)oTransportClass1.m_oFilesEnumerator.Current];
     oCurrentFile.InputStream.Position = 0;
     oAsyncContextReadOperation.ReadContextBegin(oCurrentFile.InputStream, ReadContextCallback, oTransportClass2);
 }
 private void GetResponseCallback(IAsyncResult ar)
 {
     TransportClass oTransportClass = ar.AsyncState as TransportClass;
     try
     {
         HttpWebResponse response = (HttpWebResponse)oTransportClass.m_oWebRequest.EndGetResponse(ar);
         Int64 ContentLength = 0;
         if (!Int64.TryParse(response.Headers.Get("Content-Length"), out ContentLength))
             ContentLength = 0;
         if (m_nMaxSize > 0 && ContentLength > m_nMaxSize)
         {
             _log.ErrorFormat("Downloaded object size {0} exceed max {1}", ContentLength, m_nMaxSize);
             oTransportClass.m_eError = ErrorTypes.WebRequest;
             ClearAndCallback(oTransportClass);
         }
         else
         {
             Stream streamResponse = response.GetResponseStream();
             AsyncContextReadOperation oAsyncContextReadOperation = new AsyncContextReadOperation(m_nMaxSize);
             oTransportClass.m_oHttpWebResponse = response;
             oTransportClass.m_oStream = streamResponse;
             oTransportClass.m_oAsyncContextReadOperation = oAsyncContextReadOperation;
             oAsyncContextReadOperation.ReadContextBegin(streamResponse, ReadContextCallback, oTransportClass);
         }
     }
     catch (Exception e)
     {
         _log.Error("Exception catched in GetRequestStreamCallback:", e);
         oTransportClass.m_eError = ErrorTypes.WebRequest;
         ClearAndCallback(oTransportClass, true);
     }
 }