Esempio n. 1
0
        public override void CreateFile(Stream aStream)
        {
            if (File.Exists(SecureFileName))
            {
                throw new Exception("Error adding file to secure storage: file already exist.");
            }

            //Stream lStream = new FileStream(SecureFileName,FileMode.CreateNew, FileAccess.Write, FileShare.None);
            Stream lStream = fStorage.CreateFile(SecureFileName);

            try
            {
                byte[] lBuffer = new byte[BUFFER_SIZE];

                int lBytesRead = aStream.Read(lBuffer, 0, BUFFER_SIZE);
                while (lBytesRead > 0)
                {
                    lStream.Write(lBuffer, 0, lBytesRead);
                    Size      += lBytesRead;
                    lBytesRead = aStream.Read(lBuffer, 0, BUFFER_SIZE);
                }
                /* ToDo: eliminate one call to receive by checking for lBytesRead == BUFFER_SIZE? */
                lStream.Close();
                Complete = true;
            }
            catch (ConnectionClosedException)
            {
                lStream.Close();
                Complete = true;
            }
            catch (Exception)
            {
                lStream.Close();
                File.Delete(SecureFileName);
                //lSession.CurrentFolder.DeleteFile(ea.FileName,lSession);
                throw;
            }
        }