S003 file - copy remote to local - bin mode
#####################################################;
# 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]";