7
7
"io/ioutil"
8
8
"log"
9
9
"os"
10
+ "runtime"
10
11
"sync"
11
12
"time"
12
13
)
@@ -326,6 +327,14 @@ func (engine *DesEncryptor) runDecryption(filename string) {
326
327
// fmt.Println("Encryption filename:", engine.encryptionFilename)
327
328
}
328
329
330
+ /**
331
+ copied from stackoverflow.
332
+ */
333
+ func memory_usage (m * runtime.MemStats ) string {
334
+ runtime .ReadMemStats (m )
335
+ return fmt .Sprintf ("system memory: %dMB; heap alloc: %dMB; heap idle-released: %dMB" , int ((m .Sys / 1024 )/ 1024 ), int ((m .HeapAlloc / 1024 )/ 1024 ), int (((m .HeapIdle - m .HeapReleased )/ 1024 )/ 1024 ))
336
+ }
337
+
329
338
/**
330
339
public File-encryption API.
331
340
@return: boolean value. True if encryption is successful and encrypted file
@@ -335,6 +344,8 @@ func (encryptor *DesEncryptor) EncryptFile(filename string) bool {
335
344
log .Println ("file for encryption:" , filename )
336
345
log .Println ("File-Encryption procedure started..." )
337
346
347
+ fmt .Println ("Memory stats before encryption: " , memory_usage (& runtime.MemStats {}))
348
+
338
349
encryptor .filename = filename
339
350
encryptor .encryptionFilename = filename + ".enc"
340
351
encryptor .runEncryption (filename )
@@ -370,18 +381,23 @@ func (encryptor *DesEncryptor) EncryptFile(filename string) bool {
370
381
public API for encrypting folder.
371
382
@return: boolean value. True if encryption is successful. Otherwise false is returned.
372
383
*/
373
- func (encryptor * DesEncryptor ) EncryptFolder (foldername string , isRecursive bool ) {
384
+ func (encryptor * DesEncryptor ) EncryptFolder (foldername string , isRecursive bool ) map [ string ] bool {
374
385
log .Println ("Encryption started for folder -" , foldername )
375
- encryptor .executeFolderEncryption (foldername , isRecursive )
386
+ executionStart := time .Now ()
387
+ resultMap := encryptor .executeFolderEncryption (foldername , isRecursive )
388
+ executionElapsed := time .Since (executionStart )
376
389
log .Println ("Folder - " , foldername , " encrypted successfully..." )
390
+ log .Println ("Total time required for folder encryption - " , executionElapsed )
391
+ return resultMap
377
392
}
378
393
379
394
/**
380
395
Concurrently encrypts files of the folder
381
396
*/
382
- func (encryptor * DesEncryptor ) executeFolderEncryption (foldername string , isRecursive bool ) {
397
+ func (encryptor * DesEncryptor ) executeFolderEncryption (foldername string , isRecursive bool ) map [ string ] bool {
383
398
fileList , err := encryptor .getFileList (foldername )
384
399
folderList , err := encryptor .getFolderList (foldername )
400
+ var folderFileEncryptionResult = make (map [string ]bool )
385
401
386
402
fmt .Println ("fileList:" , fileList )
387
403
fmt .Println ("folderList:" , folderList )
@@ -398,14 +414,20 @@ func (encryptor *DesEncryptor) executeFolderEncryption(foldername string, isRecu
398
414
}
399
415
filename := foldername + "/" + fileList [i ]
400
416
log .Println ("Encrypting file: " , fileList [i ])
401
- encryptor .EncryptFile (filename )
417
+ res := encryptor .EncryptFile (filename )
418
+ folderFileEncryptionResult [filename ] = res
402
419
}
403
420
// List of folders are encrypted sequentially.
404
421
if isRecursive {
405
422
for _ , directory := range folderList {
406
- encryptor .executeFolderEncryption (foldername + "/" + directory , isRecursive )
423
+ nestedFolderResultMap := encryptor .executeFolderEncryption (foldername + "/" + directory , isRecursive )
424
+ for nestedFileName , result := range nestedFolderResultMap {
425
+ folderFileEncryptionResult [nestedFileName ] = result
426
+ }
407
427
}
408
428
}
429
+
430
+ return folderFileEncryptionResult
409
431
}
410
432
411
433
/**
@@ -473,8 +495,6 @@ func (engine *DesEncryptor) DecryptFile(filename string) bool {
473
495
permissions := 0644
474
496
engine .decryptionFileConnector , err =
475
497
os .OpenFile (engine .decryptionFilename , os .O_APPEND | os .O_WRONLY , (os .FileMode )(permissions ))
476
- // file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, (os.FileMode)(permissions))
477
- // engine.cipher.Init("des_input.txt")
478
498
engine .runDecryption (filename )
479
499
engine .decryptionFileConnector .Close ()
480
500
0 commit comments