private void DeletePath(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; try { if (null != oTransportClass.m_sDeletePath && false == string.IsNullOrEmpty(oTransportClass.m_sDeletePath)) { ITaskResultInterface oTaskResult = oTransportClass.m_oTaskResult; string sKey = oTransportClass.m_sDeletePath; oTaskResult.RemoveBegin(sKey, RemoveTaskCallback, oTransportClass); } else { oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } } catch (Exception e) { _log.Error("Exception catched in DeletePath:", e); oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } }
private void WriteFileCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; try { int nWriteBytes; ErrorTypes eError = oTransportClass.m_oStorage.WriteFileEnd(result, out nWriteBytes); if (ErrorTypes.NoError == eError) { string sSiteUrl = UrlBuilder.UrlWithoutPath(oTransportClass.m_oContext.Request); string sFileUrl = sSiteUrl + Constants.mc_sResourceServiceUrlRel + HttpUtility.UrlEncode(oTransportClass.m_sPath) + "&nocache=true" + "&deletepath=" + HttpUtility.UrlEncode(oTransportClass.m_sDeletePath) + "&filename=" + HttpUtility.UrlEncode(oTransportClass.m_sFilename); writeXml(oTransportClass.m_oContext, sFileUrl, "100", true, null); } else { writeXml(oTransportClass.m_oContext, null, null, null, eError); } oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } catch { writeXml(oTransportClass.m_oContext, null, null, null, ErrorTypes.StorageWrite); oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } }
private void RemoveTaskCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; try { ITaskResultInterface oTaskResult = oTransportClass.m_oTaskResult; if (null != oTaskResult) { oTaskResult.RemoveEnd(result); } Storage oStorage = oTransportClass.m_oStorage; if (null != oStorage) { oStorage.RemovePathBegin(oTransportClass.m_sDeletePath, RemoveFileCallback, oTransportClass); } } catch (Exception e) { _log.Error("Exception catched in RemoveTaskCallback:", e); oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } }
private void ReadFileCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; HttpContext context = oTransportClass.m_oContext; try { FileStream oFileStreamInput = oTransportClass.m_oFileStreamInput; oTransportClass.nReadWriteBytes = oFileStreamInput.EndRead(result); oFileStreamInput.Dispose(); if (oTransportClass.nReadWriteBytes <= 0) { context.Response.StatusCode = (int)HttpStatusCode.BadRequest; oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } else { byte[] aOutput = null; if (gc_sJsExtention == Path.GetExtension(oTransportClass.m_sFontNameDecoded)) { aOutput = GetJsContent(oTransportClass.m_aBuffer, oTransportClass.m_sFontNameDecoded.Substring(0, oTransportClass.m_sFontNameDecoded.Length - gc_sJsExtention.Length)); oTransportClass.nReadWriteBytes = aOutput.Length; } else { aOutput = oTransportClass.m_aBuffer; byte[] guidOdttf = { 0xA0, 0x66, 0xD6, 0x20, 0x14, 0x96, 0x47, 0xfa, 0x95, 0x69, 0xB8, 0x50, 0xB0, 0x41, 0x49, 0x48 }; int nMaxLen = Math.Min(32, aOutput.Length); for (int i = 0; i < nMaxLen; ++i) { aOutput[i] ^= guidOdttf[i % 16]; } } context.Response.OutputStream.BeginWrite(aOutput, 0, aOutput.Length, WriteBufferCallback, oTransportClass); } } catch (Exception e) { context.Response.StatusCode = (int)HttpStatusCode.BadRequest; oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); _log.Error("Exception catched in ReadFileCallback:", e); } }
private void ReadFileCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; HttpContext context = oTransportClass.m_oContext; try { Storage oStorage = oTransportClass.m_oStorage; if (null != oStorage) { int nReadWriteBytes = 0; ErrorTypes eResult = oStorage.ReadFileEnd(result, out nReadWriteBytes); if (ErrorTypes.NoError != eResult) { context.Response.StatusCode = (int)HttpStatusCode.BadRequest; } else { context.Response.AddHeader("Content-Length", nReadWriteBytes.ToString()); context.Response.StatusCode = (int)HttpStatusCode.OK; } context.Response.Flush(); context.Response.End(); } if (null != oTransportClass.m_sDeletePath && false == string.IsNullOrEmpty(oTransportClass.m_sDeletePath)) { TaskResult oTaskResult = oTransportClass.m_oTaskResult; string sKey = oTransportClass.m_sDeletePath; oTaskResult.RemoveBegin(sKey, RemoveTaskCallback, oTransportClass); } else { oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } } catch (Exception e) { context.Response.StatusCode = (int)HttpStatusCode.BadRequest; oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); _log.Error("Exception catched in ReadFileCallback:", e); } }
private void RemoveFileCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; HttpContext context = oTransportClass.m_oContext; try { Storage oStorage = oTransportClass.m_oStorage; if (null != oStorage) { oStorage.RemovePathEnd(result); } oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } catch (Exception e) { _log.Error("Exception catched in RemoveFileCallback:", e); oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } }
private void WriteBufferCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; HttpContext context = oTransportClass.m_oContext; try { context.Response.OutputStream.EndWrite(result); context.Response.AddHeader("Content-Length", oTransportClass.nReadWriteBytes.ToString()); context.Response.StatusCode = (int)HttpStatusCode.OK; context.Response.Flush(); context.Response.End(); oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } catch (Exception e) { context.Response.StatusCode = (int)HttpStatusCode.BadRequest; oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); _log.Error("Exception catched in WriteBufferCallback:", e); } }
private void ReadFileCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; HttpContext context = oTransportClass.m_oContext; try { FileStream oFileStreamInput = oTransportClass.m_oFileStreamInput; oTransportClass.nReadWriteBytes = oFileStreamInput.EndRead(result); oFileStreamInput.Dispose(); if (oTransportClass.nReadWriteBytes <= 0) { context.Response.StatusCode = (int)HttpStatusCode.BadRequest; oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } else { byte[] aOutput = null; if (".js" == Path.GetExtension(m_sFontName)) { aOutput = GetJsContent(oTransportClass.m_aBuffer); oTransportClass.nReadWriteBytes = aOutput.Length; } else { aOutput = oTransportClass.m_aBuffer; } context.Response.OutputStream.BeginWrite(aOutput, 0, aOutput.Length, WriteBufferCallback, oTransportClass); } } catch (Exception e) { context.Response.StatusCode = (int)HttpStatusCode.BadRequest; oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); _log.Error("Exception catched in ReadFileCallback:", e); } }
private void ReadContextCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; try { oTransportClass.m_oAsyncContextRead.ReadContextEnd(result); oTransportClass.m_oAsyncContextRead.m_aOutput.Position = 0; oTransportClass.m_oStorage.WriteFileBegin(oTransportClass.m_sPath, oTransportClass.m_oAsyncContextRead.m_aOutput, WriteFileCallback, oTransportClass); } catch { writeXml(oTransportClass.m_oContext, null, null, null, ErrorTypes.StorageWrite); oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } }
private void WriteBufferCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; HttpContext context = oTransportClass.m_oContext; try { context.Response.OutputStream.EndWrite(result); context.Response.AppendHeader("Content-Length", oTransportClass.nReadWriteBytes.ToString()); context.Response.StatusCode = (int)HttpStatusCode.OK; } catch (HttpException httpEx) { _log.Error("HttpException catched in WriteBufferCallback:", httpEx); } catch (Exception e) { _log.Error("Exception catched in WriteBufferCallback:", e); context.Response.StatusCode = (int)HttpStatusCode.BadRequest; } try { if (context.Response.IsClientConnected) { context.Response.Flush(); } } catch (Exception e) { _log.Error("Exception catched in WriteBufferCallback, while response end:", e); } finally { try { oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } catch (Exception e) { _log.Error("Exception catched in WriteBufferCallback, while callback:", e); } } }
private void GetFileInfoCallback(IAsyncResult result) { TransportClass oTransportClass = result.AsyncState as TransportClass; HttpContext context = oTransportClass.m_oContext; bool bStartAsync = false; try { string sPath = oTransportClass.m_sPath; Storage oStorage = oTransportClass.m_oStorage; StorageFileInfo oStorageFileInfo; if (ErrorTypes.NoError == oStorage.GetFileInfoEnd(result, out oStorageFileInfo) && null != oStorageFileInfo) { string sETag = oStorageFileInfo.m_oLastModify.Ticks.ToString("x"); DateTime oLastModified = oStorageFileInfo.m_oLastModify; DateTime oDateTimeUtcNow = DateTime.UtcNow; _log.InfoFormat("oLastModified = {0}", oLastModified); _log.InfoFormat("oDateTimeUtcNow = {0}", oDateTimeUtcNow); if (oLastModified.CompareTo(oDateTimeUtcNow) > 0) { _log.DebugFormat("LastModifiedTimeStamp changed from {0} to {1}", oLastModified, oDateTimeUtcNow); oLastModified = oDateTimeUtcNow; } string sRequestIfModifiedSince = context.Request.Headers["If-Modified-Since"]; string sRequestETag = context.Request.Headers["If-None-Match"]; bool bNoModify = false; if (false == string.IsNullOrEmpty(sRequestETag) || false == string.IsNullOrEmpty(sRequestIfModifiedSince)) { bool bRequestETag = true; if (false == string.IsNullOrEmpty(sRequestETag) && sRequestETag != sETag) { bRequestETag = false; } bool bRequestIfModifiedSince = true; if (false == string.IsNullOrEmpty(sRequestIfModifiedSince)) { try { DateTime oRequestIfModifiedSince = DateTime.ParseExact(sRequestIfModifiedSince, "R", System.Globalization.CultureInfo.InvariantCulture); if ((oRequestIfModifiedSince - oLastModified).TotalSeconds > 1) { bRequestIfModifiedSince = false; } } catch { bRequestIfModifiedSince = false; } } if (bRequestETag && bRequestIfModifiedSince) { context.Response.StatusCode = (int)HttpStatusCode.NotModified; bNoModify = true; } } if (false == bNoModify) { context.Response.Cache.SetETag(sETag); context.Response.Cache.SetLastModified(oLastModified.ToLocalTime()); oStorage.ReadFileBegin(sPath, context.Response.OutputStream, ReadFileCallback, oTransportClass); bStartAsync = true; } } else { context.Response.StatusCode = (int)HttpStatusCode.NotFound; } } catch (Exception e) { _log.Error("Exception catched in GetFileInfoCallback:", e); context.Response.StatusCode = (int)HttpStatusCode.BadRequest; } if (!bStartAsync) { oTransportClass.m_oCallback(new AsyncOperationData(oTransportClass)); } }