private void WaitEnd(TransportClass1 oTransportClass1) { try { Timer oTimer = new Timer(WaitEndTimerCallback, oTransportClass1, TimeSpan.FromMilliseconds(-1), TimeSpan.FromMilliseconds(-1)); oTransportClass1.m_oTimer = oTimer; oTimer.Change(TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(-1)); } catch { WriteOutputCommand(oTransportClass1, new OutputCommand(null, null, null, ErrorTypes.Unknown)); } }
private void CheckStatus(TransportClass1 oTransportClass1, TaskResultData oTaskResultData) { switch (oTaskResultData.eStatus) { case FileStatus.Ok: string sFilename = HttpUtility.UrlEncode("output." + FileFormats.ToString(oTransportClass1.m_oInputParams.m_nOutputtype)); string sPath = HttpUtility.UrlEncode(Path.GetFileNameWithoutExtension(oTransportClass1.m_oInputParams.m_sKey) + "/output." + FileFormats.ToString(oTransportClass1.m_oInputParams.m_nOutputtype)); string sDeletePath = HttpUtility.UrlEncode(Path.GetFileNameWithoutExtension(oTransportClass1.m_oInputParams.m_sKey)); string sSiteUrl = UrlBuilder.UrlWithoutPath(oTransportClass1.m_oHttpContext.Request); string strFileUrl = sSiteUrl + Constants.mc_sResourceServiceUrlRel + sPath + "&nocache=true" + "&deletepath=" + sDeletePath + "&filename=" + sFilename; WriteOutputCommand(oTransportClass1, new OutputCommand(strFileUrl, "100", true, ErrorTypes.NoError)); break; case FileStatus.WaitQueue: if (oTransportClass1.m_oInputParams.m_bAsyncConvert) { WriteOutputCommand(oTransportClass1, new OutputCommand("", "0", false, ErrorTypes.NoError)); } else { WaitEnd(oTransportClass1); } break; case FileStatus.Convert: if (oTransportClass1.m_oInputParams.m_bAsyncConvert) { WriteOutputCommand(oTransportClass1, new OutputCommand("", oTaskResultData.nStatusInfo.ToString(), false, ErrorTypes.NoError)); } else { WaitEnd(oTransportClass1); } break; case FileStatus.Err: case FileStatus.ErrToReload: AsyncClearCacheOperation oAsyncClearCacheOperation = new AsyncClearCacheOperation(); TransportClass2 oTransportClass2 = new TransportClass2(oTransportClass1, oAsyncClearCacheOperation, (ErrorTypes)oTaskResultData.nStatusInfo); oAsyncClearCacheOperation.ClearCacheBegin(oTransportClass1.m_oInputParams.m_sKey, ClearCacheCallback, oTransportClass2); break; default: WriteOutputCommand(oTransportClass1, new OutputCommand(null, null, null, ErrorTypes.Unknown)); break; } }
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) { TransportClassMainAshx oTransportClassMainAshx = new TransportClassMainAshx(context, cb); ErrorTypes eError = ErrorTypes.NoError; try { _log.Info("Starting process request..."); _log.Info(context.Request.QueryString.ToString()); string sGuid = context.Request.QueryString["key"]; int nMaxBytes = Convert.ToInt32(ConfigurationSettings.AppSettings["limits.image.size"] ?? "25000000"); if (context.Request.ContentLength <= nMaxBytes) { if (context.Request.Files.Count > 0) { int nParamsCount = 0; string sInputParams = ""; for (int i = 0, length = context.Request.QueryString.Count; i < length; ++i) { sInputParams += context.Request.QueryString.Get(i) + ":" + context.Request.QueryString.GetKey(i); if (nParamsCount > 0) sInputParams += ","; nParamsCount++; } AsyncMediaXmlOperation oAsyncMediaXmlOperation = new AsyncMediaXmlOperation(); List<string> aUrls = new List<string>(); TransportClass1 oTransportClass1 = new TransportClass1(oTransportClassMainAshx, oAsyncMediaXmlOperation, context.Request.QueryString, aUrls, sGuid, Path.Combine(sGuid, @"media/media.xml"), context.Request.Files, context.Request.Files.GetEnumerator()); oAsyncMediaXmlOperation.GetMediaXmlBegin(oTransportClass1.m_sMediaXml, GetMediaXmlCallback, oTransportClass1); } else eError = ErrorTypes.UploadCountFiles; } else eError = ErrorTypes.UploadContentLength; } catch(Exception e) { eError = ErrorTypes.Upload; _log.Error(context.Request.QueryString.ToString()); _log.Error("Exeption: ", e); } if (ErrorTypes.NoError != eError) WriteToResponse(oTransportClassMainAshx, eError, null, context.Request.QueryString); return new AsyncOperationData(extraData); }
private void WaitEndTimerCallback(Object stateInfo) { TransportClass1 oTransportClass1 = stateInfo as TransportClass1; try { if (null != oTransportClass1.m_oTimer) { oTransportClass1.m_oTimer.Dispose(); } oTransportClass1.m_oTaskResult.GetBegin(oTransportClass1.m_oInputParams.m_sKey, WaitEndCallback, oTransportClass1); } catch { WriteOutputCommand(oTransportClass1, new OutputCommand(null, null, null, ErrorTypes.Unknown)); } }
private void WaitEndCallback(IAsyncResult ar) { TransportClass1 oTransportClass1 = ar.AsyncState as TransportClass1; try { TaskResultData oTaskResultData; ErrorTypes eError = oTransportClass1.m_oTaskResult.GetEnd(ar, out oTaskResultData); if (ErrorTypes.NoError == eError) { CheckStatus(oTransportClass1, oTaskResultData); } else { WriteOutputCommand(oTransportClass1, new OutputCommand(null, null, null, eError)); } } catch { WriteOutputCommand(oTransportClass1, new OutputCommand(null, null, null, ErrorTypes.Unknown)); } }
private void WriteMediaXmlCallback(IAsyncResult ar) { TransportClass1 oTransportClass1 = ar.AsyncState as TransportClass1; try { ErrorTypes eError = oTransportClass1.m_oAsyncMediaXmlOperation.WriteMediaXmlEnd(ar); if (ErrorTypes.NoError == eError) { WriteToResponse(oTransportClass1, ErrorTypes.NoError, oTransportClass1.m_aUrls, oTransportClass1.m_aInputParams); } else { WriteToResponse(oTransportClass1, eError, null, oTransportClass1.m_aInputParams); } } catch (Exception e) { _log.Error("Exeption: ", e); WriteToResponse(oTransportClass1, ErrorTypes.Upload, null, oTransportClass1.m_aInputParams); } }
private void GetMediaXmlCallback(IAsyncResult ar) { TransportClass1 oTransportClass1 = ar.AsyncState as TransportClass1; try { Dictionary <string, string> aMediaXmlMapHash; Dictionary <string, string> aMediaXmlMapFilename; ErrorTypes eError = oTransportClass1.m_oAsyncMediaXmlOperation.GetMediaXmlEnd(ar, out aMediaXmlMapHash, out aMediaXmlMapFilename); if (ErrorTypes.NoError == eError && oTransportClass1.m_oFilesEnumerator.MoveNext()) { GetMediaXmlCallbackProcess(oTransportClass1, aMediaXmlMapHash, aMediaXmlMapFilename); } else { WriteToResponse(oTransportClass1, eError, null, oTransportClass1.m_aInputParams); } } catch (Exception e) { _log.Error("Exeption: ", e); WriteToResponse(oTransportClass1, ErrorTypes.Upload, null, oTransportClass1.m_aInputParams); } }
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) { TransportClassMainAshx oTransportClassMainAshx = new TransportClassMainAshx(context, cb); ErrorTypes eError = ErrorTypes.NoError; try { _log.Info("Starting process request..."); _log.Info(context.Request.QueryString.ToString()); InputParams oInputParams = new InputParams(); oInputParams.m_sKey = context.Request.QueryString["key"]; oInputParams.m_svKey = context.Request.QueryString["vkey"]; oInputParams.m_sUrl = context.Request.QueryString["url"]; oInputParams.m_sEmbeddedfonts = context.Request.QueryString["embeddedfonts"]; int nIndexSep = oInputParams.m_sUrl.IndexOf(','); if (-1 != nIndexSep) { oInputParams.m_sUrl = oInputParams.m_sUrl.Substring(0, nIndexSep); } oInputParams.m_sTitle = context.Request.QueryString["title"]; if (string.IsNullOrEmpty(oInputParams.m_sTitle)) { oInputParams.m_sTitle = "convert"; } oInputParams.m_sFiletype = context.Request.QueryString["filetype"]; oInputParams.m_nOutputtype = FileFormats.FromString(context.Request.QueryString["outputtype"]); oInputParams.m_bAsyncConvert = Convert.ToBoolean(context.Request.QueryString["async"]); oInputParams.m_sCodepage = context.Request.QueryString["codePage"]; oInputParams.m_sDelimiter = context.Request.QueryString["delimiter"]; if (ErrorTypes.NoError == eError) { ITaskResultInterface oTaskResult = TaskResult.NewTaskResult(); TaskResultData oToAdd = new TaskResultData(); oInputParams.m_sKey = "conv_" + oInputParams.m_sKey; oToAdd.sKey = oInputParams.m_sKey; oToAdd.sFormat = oInputParams.m_sFiletype; oToAdd.eStatus = FileStatus.WaitQueue; oToAdd.sTitle = oInputParams.m_sTitle; TransportClass1 oTransportClass1 = new TransportClass1(oTransportClassMainAshx, oTaskResult, new CTaskQueue(), oInputParams); oTaskResult.GetOrCreateBegin(oInputParams.m_sKey, oToAdd, GetOrCreateCallback, oTransportClass1); } } catch (Exception e) { eError = ErrorTypes.Unknown; _log.Error(context.Request.QueryString.ToString()); _log.Error("Exeption: ", e); } finally { if (ErrorTypes.NoError != eError) { WriteOutputCommand(oTransportClassMainAshx, new OutputCommand(null, null, null, eError)); } } return(new AsyncOperationData(extraData)); }
public TransportClass2(TransportClass1 oTransportClass1, Dictionary<string, string> oMediaXmlMapHash, Dictionary<string, string> oMediaXmlMapFilename, AsyncContextReadOperation oAsyncContextReadOperation) : base(oTransportClass1, oTransportClass1.m_oAsyncMediaXmlOperation, oTransportClass1.m_aInputParams, oTransportClass1.m_aUrls, oTransportClass1.m_sKey, oTransportClass1.m_sMediaXml, oTransportClass1.m_oFiles, oTransportClass1.m_oFilesEnumerator) { m_oMediaXmlMapHash = oMediaXmlMapHash; m_oMediaXmlMapFilename = oMediaXmlMapFilename; m_oAsyncContextReadOperation = oAsyncContextReadOperation; }
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); }
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) { TransportClassMainAshx oTransportClassMainAshx = new TransportClassMainAshx(context, cb); ErrorTypes eError = ErrorTypes.NoError; try { _log.Info("Starting process request..."); _log.Info(context.Request.QueryString.ToString()); InputParams oInputParams = new InputParams(); oInputParams.m_sKey = context.Request.QueryString["key"]; oInputParams.m_svKey = context.Request.QueryString["vkey"]; oInputParams.m_sUrl = context.Request.QueryString["url"]; oInputParams.m_sEmbeddedfonts = context.Request.QueryString["embeddedfonts"]; int nIndexSep = oInputParams.m_sUrl.IndexOf(','); if (-1 != nIndexSep) oInputParams.m_sUrl = oInputParams.m_sUrl.Substring(0, nIndexSep); oInputParams.m_sTitle = context.Request.QueryString["title"]; if (string.IsNullOrEmpty(oInputParams.m_sTitle)) oInputParams.m_sTitle = "convert"; oInputParams.m_sFiletype = context.Request.QueryString["filetype"]; oInputParams.m_nOutputtype = FileFormats.FromString(context.Request.QueryString["outputtype"]); oInputParams.m_bAsyncConvert = Convert.ToBoolean(context.Request.QueryString["async"]); oInputParams.m_sCodepage = context.Request.QueryString["codePage"]; oInputParams.m_sDelimiter = context.Request.QueryString["delimiter"]; if (ErrorTypes.NoError == eError) { ITaskResultInterface oTaskResult = TaskResult.NewTaskResult(); TaskResultData oToAdd = new TaskResultData(); oInputParams.m_sKey = "conv_" + oInputParams.m_sKey; oToAdd.sKey = oInputParams.m_sKey; oToAdd.sFormat = oInputParams.m_sFiletype; oToAdd.eStatus = FileStatus.WaitQueue; oToAdd.sTitle = oInputParams.m_sTitle; TransportClass1 oTransportClass1 = new TransportClass1(oTransportClassMainAshx, oTaskResult, new CTaskQueue(), oInputParams); oTaskResult.GetOrCreateBegin(oInputParams.m_sKey, oToAdd, GetOrCreateCallback, oTransportClass1); } } catch(Exception e) { eError = ErrorTypes.Unknown; _log.Error(context.Request.QueryString.ToString()); _log.Error("Exeption: ", e); } finally { if( ErrorTypes.NoError != eError ) WriteOutputCommand(oTransportClassMainAshx, new OutputCommand(null, null, null, eError)); } return new AsyncOperationData(extraData); }
private void CheckStatus(TransportClass1 oTransportClass1, TaskResultData oTaskResultData) { switch (oTaskResultData.eStatus) { case FileStatus.Ok: string sFilename = HttpUtility.UrlEncode("output." + FileFormats.ToString(oTransportClass1.m_oInputParams.m_nOutputtype)); string sPath = HttpUtility.UrlEncode(Path.GetFileNameWithoutExtension(oTransportClass1.m_oInputParams.m_sKey) + "/output." + FileFormats.ToString(oTransportClass1.m_oInputParams.m_nOutputtype)); string sDeletePath = HttpUtility.UrlEncode(Path.GetFileNameWithoutExtension(oTransportClass1.m_oInputParams.m_sKey)); string sSiteUrl = UrlBuilder.UrlWithoutPath(oTransportClass1.m_oHttpContext.Request); string strFileUrl = sSiteUrl + Constants.mc_sResourceServiceUrlRel + sPath + "&nocache=true" +"&deletepath=" + sDeletePath + "&filename=" + sFilename; WriteOutputCommand(oTransportClass1, new OutputCommand(strFileUrl, "100", true, ErrorTypes.NoError)); break; case FileStatus.WaitQueue: if (oTransportClass1.m_oInputParams.m_bAsyncConvert) WriteOutputCommand(oTransportClass1, new OutputCommand("", "0", false, ErrorTypes.NoError)); else WaitEnd(oTransportClass1); break; case FileStatus.Convert: if (oTransportClass1.m_oInputParams.m_bAsyncConvert) WriteOutputCommand(oTransportClass1, new OutputCommand("", oTaskResultData.nStatusInfo.ToString(), false, ErrorTypes.NoError)); else WaitEnd(oTransportClass1); break; case FileStatus.Err: case FileStatus.ErrToReload: AsyncClearCacheOperation oAsyncClearCacheOperation = new AsyncClearCacheOperation(); TransportClass2 oTransportClass2 = new TransportClass2(oTransportClass1, oAsyncClearCacheOperation, (ErrorTypes)oTaskResultData.nStatusInfo); oAsyncClearCacheOperation.ClearCacheBegin(oTransportClass1.m_oInputParams.m_sKey, ClearCacheCallback, oTransportClass2); break; default: WriteOutputCommand(oTransportClass1, new OutputCommand(null, null, null, ErrorTypes.Unknown)); break; } }