#####################################################; # Copy a remote file to local file (in binary mode) #; #####################################################; #Initialization; -> "[source]" "/Users/jimmitry/Desktop/test.jpg"; -> "[destination]" "/Users/jimmitry/Desktop/copy.jpg"; -> "[nb_bytes]" 204800; try { #Connect the remote MentDB server; tunnel connect "session1" {cm get "demo_cm_mentdb";}; #Open a remote reader; tunnel execute "session1" (concat "-> \"[source]\" \"" (mql encode [source]) "\";" (mql { file reader_open "r1" [source] BINARY null; }) ); #Open a local writer; file writer_open "w1" [destination] true BINARY null; #Parse the file; while (is not null (-> "[bytes]" (tunnel execute "session1" (concat "-> \"[nb_bytes]\" \"" (mql encode [nb_bytes]) "\";" (mql { file reader_get_bytes "r1" [nb_bytes] }) )))) { file writer_add_bytes "w1" [bytes]; }; #Force to write; file writer_flush "w1"; #Close the reader and the writer; tunnel execute "session1" "file reader_close \"r1\";"; file writer_close "w1"; #Disconnect from the remote MentDB server; tunnel disconnect "session1"; } { #Close objects; try {tunnel disconnect "session1";} {} "[sub_err]"; try {file reader_close "r1";} {} "[sub_err]"; try {file writer_close "w1";} {} "[sub_err]"; #Generate an error; exception (1) ([err]); } "[err]";