private void StorageWriteFileAsyncCallback(IAsyncResult ar) { TransportClassStorage oTransportClassStorage = ar.AsyncState as TransportClassStorage; try { int nReadWriteBytes; ErrorTypes eError = oTransportClassStorage.m_oStorage.WriteFileEnd(ar, out nReadWriteBytes); if (null != oTransportClassStorage.m_oStream) oTransportClassStorage.m_oStream.Dispose(); if (ErrorTypes.NoError == eError) { InputCommand cmd = oTransportClassStorage.m_oInputCommand; if (c_sSaveTypeCompleteAll == cmd.savetype || c_sSaveTypeComplete == cmd.savetype) { int nOutputFormat = cmd.outputformat.Value; TaskQueueData oTaskQueueData = new TaskQueueData(oTransportClassStorage.m_sKey, nOutputFormat, "output." + FileFormats.ToString(nOutputFormat)); oTaskQueueData.m_sFromKey = cmd.id; oTaskQueueData.m_sFromFormat = "bin"; if (cmd.codepage.HasValue) oTaskQueueData.m_nCsvTxtEncoding = cmd.codepage.Value; if (cmd.delimiter.HasValue) oTaskQueueData.m_nCsvDelimiter = cmd.delimiter.Value; if (null != cmd.vkey) { bool bPaid; Signature.getVKeyParams(cmd.vkey, out bPaid); oTaskQueueData.m_bPaid = bPaid; } Priority oPriority = Priority.Low; if (cmd.innersave) oPriority = Priority.Normal; CTaskQueue oTaskQueue = new CTaskQueue(); TransportClassTaskQueue oTransportClassTaskQueue = new TransportClassTaskQueue(oTransportClassStorage, oTaskQueue, oTaskQueueData); oTaskQueue.AddTaskBegin(oTaskQueueData, oPriority, TaskQueueAddCallbackSave, oTransportClassTaskQueue); } else { JavaScriptSerializer serializer = new JavaScriptSerializer(); OutputSavePartData oOutputSavePartData = new OutputSavePartData(oTransportClassStorage.m_sKey, cmd.outputformat.Value); WriteOutputCommand(oTransportClassStorage, new OutputCommand("savepart", serializer.Serialize(oOutputSavePartData))); } } else WriteOutputCommand(oTransportClassStorage, new OutputCommand(eError)); } catch { WriteOutputCommand(oTransportClassStorage, new OutputCommand(ErrorTypes.Unknown)); } }
private void SaveCommand(TransportClassContextRead oTransportClassContextRead, InputCommand cmd) { _log.DebugFormat("SaveCommand, savetype={0}.", cmd.savetype); switch (cmd.savetype) { case c_sSaveTypePartStart: case c_sSaveTypeCompleteAll: { _log.Debug("cmd.savetype = SaveTypes.PartStart or SaveTypes.CompleteAll."); TaskResultData oTaskResultData = new TaskResultData(); oTaskResultData.sKey = cmd.id; oTaskResultData.sFormat = cmd.format; oTaskResultData.eStatus = FileStatus.WaitQueue; ITaskResultInterface oTaskResult = TaskResult.NewTaskResult(); TransportClassTaskResult oTransportClassTaskResult = new TransportClassTaskResult(oTransportClassContextRead, cmd, oTaskResult); oTaskResult.AddRandomKeyBegin(cmd.id, oTaskResultData, TaskResultAddRandomKeyAsyncCallback, oTransportClassTaskResult); break; } case c_sSaveTypePart: case c_sSaveTypeComplete: default: { _log.Debug("cmd.savetype = SaveTypes.Part or SaveTypes.Complete or default."); JavaScriptSerializer serializer = new JavaScriptSerializer(); OutputSavePartData oOutputSavePartData = new OutputSavePartData(cmd.savekey, cmd.outputformat.Value); OutputCommand oOutputCommand = new OutputCommand("savepart", serializer.Serialize(oOutputSavePartData)); string sFilename = "Editor"; string sExt = ".bin"; Storage oStorage = new Storage(); TransportClassStorage2 oTransportClassStorage2 = new TransportClassStorage2(oTransportClassContextRead, cmd, oStorage, null, cmd.savekey, sFilename, sExt, oOutputCommand); oStorage.GetTreeNodeBegin(cmd.savekey, GetTreeNodeCallback, oTransportClassStorage2); break; } } }