]> source.dussan.org Git - tigervnc.git/commitdiff
Added FileTransfer::procFileUploadCancelMsg() and
authorDennis Syrovatsky <dennis@tightvnc.com>
Sun, 18 Dec 2005 09:10:43 +0000 (09:10 +0000)
committerDennis Syrovatsky <dennis@tightvnc.com>
Sun, 18 Dec 2005 09:10:43 +0000 (09:10 +0000)
FileTransfer::procFileDownloadFailedMsg() methods.
Code improvements. Major changes in the FTMsgReader class.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@459 3789f03b-4d11-0410-bbf8-ca57d06f2519

vncviewer/FTMsgReader.cxx
vncviewer/FTMsgReader.h
vncviewer/FileTransfer.cxx

index 7f0c3304ef157f303dc883cdec14ecdaadf0551c..d2d118bfcfb8184f9ba1858845153009e6386e99 100644 (file)
@@ -88,18 +88,18 @@ FTMsgReader::readFileDownloadData(unsigned int *pSize, unsigned int *pModTime)
   }
 }
 
-int 
-FTMsgReader::readFileUploadCancel(void *pReason)
+char * 
+FTMsgReader::readFileUploadCancel(unsigned int *pReasonSize)
 {
   m_pInStream->skip(1);
-  return readReasonMsg(pReason);
+  return readReasonMsg(pReasonSize);
 }
 
-int 
-FTMsgReader::readFileDownloadFailed(void *pReason)
+char * 
+FTMsgReader::readFileDownloadFailed(unsigned int *pReasonSize)
 {
   m_pInStream->skip(1);
-  return readReasonMsg(pReason);
+  return readReasonMsg(pReasonSize);
 }
 
 int 
@@ -115,11 +115,11 @@ FTMsgReader::readFileDirSizeData(DWORD64 *pdw64DirSize)
   return 1;
 }
 
-int 
-FTMsgReader::readFileLastRqstFailed(int *pTypeOfRequest, void *pReason)
+char * 
+FTMsgReader::readFileLastRqstFailed(int *pTypeOfRequest, unsigned int *pReasonSize)
 {
   *pTypeOfRequest = m_pInStream->readU8();
-  return readReasonMsg(pReason);
+  return readReasonMsg(pReasonSize);
 }
 
 bool 
@@ -140,21 +140,25 @@ FTMsgReader::createFileInfo(unsigned int numFiles, FileInfo *fi,
   return true;
 }
 
-int 
-FTMsgReader::readReasonMsg(void *pReason)
+char * 
+FTMsgReader::readReasonMsg(unsigned int *pReasonSize)
 {
   int reasonLen = m_pInStream->readU16();
   int _reasonLen = reasonLen + 1;
+  char *pReason;
   if (reasonLen == 0) {
-    return 0;
+    *pReasonSize = 0;
+    return NULL;
   } else {
-    pReason = malloc(_reasonLen);
+    pReason = new char [_reasonLen];
     if (pReason == NULL) {
       m_pInStream->skip(reasonLen);
-      return -1;
+      *pReasonSize = 0;
+      return NULL;
     }
     m_pInStream->readBytes(pReason, reasonLen);
     memset(((char *)pReason+reasonLen), '\0', 1);
-    return _reasonLen;
+    return pReason;
   }
 }
+
index ed51d5179fe2ef96e109e87f088bab2a4ed4501e..00706f716bf54e64e01e602972018fdf8f195071 100644 (file)
@@ -38,10 +38,11 @@ namespace rfb {
       ~FTMsgReader();
 
       int readFileListData(FileInfo *pFileInfo);
-      int readFileUploadCancel(void *pReason);
-      int readFileDownloadFailed(void *pReason);
       int readFileDirSizeData(DWORD64 *pdw64DirSize);
-      int readFileLastRqstFailed(int *pTypeOfRequest, void *pReason);
+
+      char *readFileUploadCancel(unsigned int *pReasonSize);
+      char *readFileDownloadFailed(unsigned int *pReasonSize);
+      char *readFileLastRqstFailed(int *pTypeOfRequest, unsigned int *pReasonSize);
       void *readFileDownloadData(unsigned int *pSize, unsigned int *pModTime);
       
     private:
@@ -49,7 +50,7 @@ namespace rfb {
 
       bool createFileInfo(unsigned int numFiles, FileInfo *fi, 
                           SIZEDATAINFO *pSDInfo, char *pFilenames);
-      int readReasonMsg(void *pReason);
+      char *readReasonMsg(unsigned int *pReasonSize);
     };
   }
 }
index 32279d017d83b09e0cabcae217fce490acc688d6..01aae568f906ea2228fd422df3cc6105b767ad6c 100644 (file)
@@ -452,14 +452,14 @@ FileTransfer::procFileDownloadDataMsg()
 
   if ((!m_fileWriter.isCreated()) || (!isTransferEnable())) {
     m_bTransferSuccess = false;
-    if (pFile != NULL) delete pFile;
+    if (pFile != NULL) delete [] pFile;
     return false;
   }
 
   if (bufSize > 0) {
     unsigned int bytesWritten = 0;
     m_fileWriter.write(pFile, bufSize, &bytesWritten);
-    delete pFile;
+    delete [] pFile;
     if (bytesWritten != bufSize) {
       m_bTransferSuccess = false;
       char reason[] = "Error File Writting to File";
@@ -507,13 +507,33 @@ FileTransfer::procFileDownloadDataMsg()
 bool 
 FileTransfer::procFileUploadCancelMsg()
 {
-  return false;
+  unsigned int reasonSize = 0;
+  char *pReason = m_pReader->readFileUploadCancel(&reasonSize);
+
+  if (m_bFTDlgShown) {
+    m_pFTDialog->setStatusText("Upload Canceled by Remote Computer : %s", pReason);
+  }
+  endUndoneOperation();
+  m_pFTDialog->postCheckTransferQueueMsg();
+
+  delete [] pReason;
+  return true;
 }
 
 bool 
 FileTransfer::procFileDownloadFailedMsg()
 {
-  return false;
+  unsigned int reasonSize = 0;
+  char *pReason = m_pReader->readFileDownloadFailed(&reasonSize);
+
+  if (m_bFTDlgShown) {
+    m_pFTDialog->setStatusText("Download Failed by Remote Computer : %s", pReason);
+  }
+  endUndoneOperation();
+  m_pFTDialog->postCheckTransferQueueMsg();
+
+  delete [] pReason;
+  return true;
 }
 
 bool 
@@ -530,7 +550,11 @@ FileTransfer::procFileDirSizeDataMsg()
 bool 
 FileTransfer::procFileLastRqstFailedMsg()
 {
-  return false;
+  unsigned int reasonSize = 0;
+  int requestType;
+  char *pReason = m_pReader->readFileLastRqstFailed(&requestType, &reasonSize);
+  delete [] pReason;
+  return true;
 }
 
 bool 
@@ -646,7 +670,6 @@ FileTransfer::checkCancelOperations()
   if (m_bFTDlgShown) m_pFTDialog->processDlgMsgs();
   if (m_bCancel) {
     endUndoneOperation();
-    m_bTransferSuccess = false;
     if (m_bFTDlgShown) {
       m_pFTDialog->setStatusText("All Operations Canceled");
     }
@@ -660,6 +683,7 @@ void
 FileTransfer::endUndoneOperation()
 {
   m_bCancel = false;
+  m_bTransferSuccess = false;
   m_fileReader.close();
   m_fileWriter.close();
   freeQueues();