Commit 1d4718c6245b9e270425dace0512dbda5157b265
1 parent
239531ee
finish the get_file independent command command based on long time ago FTP_* protocol
Showing
2 changed files
with
28 additions
and
25 deletions
Show diff stats
net_services/CXM_generic_protocol.anubis
net_services/get_file.anubis
| ... | ... | @@ -10,14 +10,16 @@ |
| 10 | 10 | read calexium_lib/CXM_message_constants.anubis |
| 11 | 11 | read calexium_lib/net_services/CXM_generic_protocol.anubis |
| 12 | 12 | read calexium_lib/net_services/CXM_generic_client.anubis //for get_ip |
| 13 | +read calexium_lib/types/generated/file_ref.anubis | |
| 13 | 14 | read system/message_queue.anubis |
| 14 | 15 | read system/message_transceiver.anubis |
| 15 | 16 | read system/muscle.anubis |
| 16 | 17 | read system/files.anubis |
| 18 | +read system/logger.anubis | |
| 17 | 19 | read tools/basis.anubis |
| 18 | 20 | read network/dns.anubis |
| 19 | 21 | |
| 20 | -define Maybe(One) | |
| 22 | +define Bool | |
| 21 | 23 | receive_data |
| 22 | 24 | ( |
| 23 | 25 | MessageQueue mQ, |
| ... | ... | @@ -28,24 +30,24 @@ define Maybe(One) |
| 28 | 30 | //println("receive_data "); |
| 29 | 31 | if mQ.get_next_received_Message(30) is |
| 30 | 32 | { |
| 31 | - timeout then failure, | |
| 32 | - closed then failure, | |
| 33 | + timeout then false, | |
| 34 | + closed then false, | |
| 33 | 35 | msg(_msg) then |
| 34 | 36 | with last_block = if find_bool(_msg, "End") is {failure then false, success(r) then r}, |
| 35 | 37 | if find_raw(_msg, "Data") is |
| 36 | 38 | { |
| 37 | - failure then println("Can't find raw Data"); send_ACK_error(mQ, _CXM_FTP_DATA); failure, | |
| 39 | + failure then println("Can't find raw Data"); send_ACK_error(mQ, _CXM_FTP_DATA); false, | |
| 38 | 40 | success(data) then |
| 39 | 41 | if write(fd, data) is |
| 40 | 42 | { |
| 41 | - failure then println("Can't write into file"); send_ACK_error(mQ, _CXM_FTP_DATA);failure, | |
| 43 | + failure then println("Can't write into file"); send_ACK_error(mQ, _CXM_FTP_DATA);false, | |
| 42 | 44 | success(len) then |
| 43 | 45 | send_ACK_ok(mQ, _CXM_FTP_DATA); |
| 44 | 46 | if last_block then |
| 45 | 47 | println("File received successfully"); |
| 46 | 48 | //TODO this is a big hack, we must check if all data are sent from the mQ |
| 47 | 49 | sleep(10000); |
| 48 | - success(unique) | |
| 50 | + true | |
| 49 | 51 | else |
| 50 | 52 | // println("Bytes received : " + (so_far + len)); |
| 51 | 53 | receive_data(mQ, fd, so_far + len, left_read - len) |
| ... | ... | @@ -54,17 +56,18 @@ define Maybe(One) |
| 54 | 56 | } |
| 55 | 57 | . |
| 56 | 58 | |
| 57 | -define Maybe(One) | |
| 59 | +define Bool | |
| 58 | 60 | start_get_file_transtert |
| 59 | 61 | ( |
| 60 | - MessageQueue mQ, | |
| 61 | - String local_file, | |
| 62 | - Int size | |
| 62 | + MessageQueue mQ, | |
| 63 | + String local_file, | |
| 64 | + Int size, | |
| 65 | + (LogLevel, String) -> One logger | |
| 63 | 66 | )= |
| 64 | 67 | make_directories(local_file); |
| 65 | 68 | if file(local_file, new) is |
| 66 | 69 | { |
| 67 | - failure then println("Can't create \""+local_file+"\" file"); failure, | |
| 70 | + failure then logger(logError, "start_get_file_transtert Can't create \""+local_file+"\" file"); false, | |
| 68 | 71 | success(fd) then //the local file is open |
| 69 | 72 | with start = message(_CXM_FTP_START_TRANSFERT), |
| 70 | 73 | mQ.add_Message_to_send(start); |
| ... | ... | @@ -72,7 +75,7 @@ define Maybe(One) |
| 72 | 75 | } |
| 73 | 76 | . |
| 74 | 77 | |
| 75 | -define Bool | |
| 78 | +public define Bool | |
| 76 | 79 | get_file_ref |
| 77 | 80 | ( |
| 78 | 81 | MessageQueue mQ, |
| ... | ... | @@ -85,22 +88,22 @@ define Bool |
| 85 | 88 | forget(add_message(get_file_msg, "GET_FILE_REF", to_Message(f_ref))); |
| 86 | 89 | |
| 87 | 90 | mQ.add_Message_to_send(get_file_msg); |
| 88 | - if wait_for_reply(mQ, _CXM_FTP_GET_FILE, 30) is | |
| 91 | + if wait_for_reply(mQ, _CXM_GET_FILE_REF, 30) is | |
| 89 | 92 | { |
| 90 | - failure then println("get_file failure");failure, | |
| 91 | - timeout then println("get_file timeout");failure, | |
| 92 | - unknow_cmd then println("get_file unknow_cmd");failure, | |
| 93 | - error then println("get_file remote error msg");failure, | |
| 94 | - error(c,m) then println("get_file remote error [" + c + "] msg '" + m + "'");failure, | |
| 95 | - ok then println("get_file ok");failure, | |
| 93 | + failure then println("get_file failure");false, | |
| 94 | + timeout then logger(logError, "get_file timeout");false, | |
| 95 | + unknow_cmd then logger(logWarning,"get_file unknow_cmd");false, | |
| 96 | + error then println("get_file remote error msg");false, | |
| 97 | + error(c,m) then println("get_file remote error [" + c + "] msg '" + m + "'");false, | |
| 98 | + ok then println("get_file ok");false, | |
| 96 | 99 | ok_msg(msg)then |
| 97 | - with size = if find_string(rmsg, "SIZE") is {failure then f_ref.size, success(size_str) then if decimal_scan(size_str) is { failure then should_not_happen(0), success(_size_) then _size_}}, | |
| 98 | - start_get_file_transtert(mQ, target_file, size) | |
| 100 | + with size = if find_string(msg, "SIZE") is {failure then f_ref.size, success(size_str) then if decimal_scan(size_str) is { failure then should_not_happen(0), success(_size_) then _size_}}, | |
| 101 | + start_get_file_transtert(mQ, target_file, size, logger) | |
| 99 | 102 | } |
| 100 | 103 | . |
| 101 | 104 | |
| 102 | 105 | |
| 103 | -define Bool | |
| 106 | + define Bool | |
| 104 | 107 | request_for_service |
| 105 | 108 | ( |
| 106 | 109 | MessageQueue queue |
| ... | ... | @@ -125,7 +128,7 @@ define Bool |
| 125 | 128 | } |
| 126 | 129 | }. |
| 127 | 130 | |
| 128 | -public define Maybe(One) | |
| 131 | + public define Maybe(One) | |
| 129 | 132 | ftp_get_file |
| 130 | 133 | ( |
| 131 | 134 | String server, |
| ... | ... | @@ -158,7 +161,7 @@ public define Maybe(One) |
| 158 | 161 | * The last argument set to false (no ftp directory on the remote, pickup on collection dir) |
| 159 | 162 | */ |
| 160 | 163 | |
| 161 | -public define Maybe(One) | |
| 164 | + public define Maybe(One) | |
| 162 | 165 | ftp_get_file |
| 163 | 166 | ( |
| 164 | 167 | String server, | ... | ... |