Commit 08249cb90ef1f5e24da7c4d1141b37ed112aef78

Authored by David RENE
1 parent a737dc7b

the ftp return a Maybe(One)

Showing 1 changed file with 23 additions and 22 deletions   Show diff stats
calexium_lib/net_services_protocols/ftp_client.anubis
@@ -13,9 +13,10 @@ read calexium_lib/net_services/CXM_generic_protocol.anubis @@ -13,9 +13,10 @@ read calexium_lib/net_services/CXM_generic_protocol.anubis
13 read system/message_queue.anubis 13 read system/message_queue.anubis
14 read system/message_transceiver.anubis 14 read system/message_transceiver.anubis
15 read system/muscle.anubis 15 read system/muscle.anubis
  16 +read system/files.anubis
16 read tools/basis.anubis 17 read tools/basis.anubis
17 18
18 -define One 19 +define Maybe(One)
19 receive_data 20 receive_data
20 ( 21 (
21 MessageQueue mQ, 22 MessageQueue mQ,
@@ -26,22 +27,22 @@ define One @@ -26,22 +27,22 @@ define One
26 //println("receive_data "); 27 //println("receive_data ");
27 if mQ.get_next_received_Message(30) is 28 if mQ.get_next_received_Message(30) is
28 { 29 {
29 - timeout then unique,  
30 - closed then unique, 30 + timeout then failure,
  31 + closed then failure,
31 msg(_msg) then 32 msg(_msg) then
32 with last_block = if find_bool(_msg, "End") is {failure then false, success(r) then r}, 33 with last_block = if find_bool(_msg, "End") is {failure then false, success(r) then r},
33 if find_raw(_msg, "Data") is 34 if find_raw(_msg, "Data") is
34 { 35 {
35 - failure then println("Can't find raw Data"); send_ACK_error(mQ, _CXM_FTP_DATA), 36 + failure then println("Can't find raw Data"); send_ACK_error(mQ, _CXM_FTP_DATA); failure,
36 success(data) then 37 success(data) then
37 if write(fd, data) is 38 if write(fd, data) is
38 { 39 {
39 - failure then println("Can't write into file"); send_ACK_error(mQ, _CXM_FTP_DATA), 40 + failure then println("Can't write into file"); send_ACK_error(mQ, _CXM_FTP_DATA);failure,
40 success(len) then 41 success(len) then
41 send_ACK_ok(mQ, _CXM_FTP_DATA); 42 send_ACK_ok(mQ, _CXM_FTP_DATA);
42 if last_block then 43 if last_block then
43 println("File received successfully"); 44 println("File received successfully");
44 - unique 45 + success(unique)
45 else 46 else
46 println("Bytes received : " + (so_far + len)); 47 println("Bytes received : " + (so_far + len));
47 receive_data(mQ, fd, so_far + len, left_read - len) 48 receive_data(mQ, fd, so_far + len, left_read - len)
@@ -50,16 +51,17 @@ define One @@ -50,16 +51,17 @@ define One
50 } 51 }
51 . 52 .
52 53
53 -define One 54 +define Maybe(One)
54 start_get_file_transtert 55 start_get_file_transtert
55 ( 56 (
56 MessageQueue mQ, 57 MessageQueue mQ,
57 String local_file, 58 String local_file,
58 Int32 size 59 Int32 size
59 )= 60 )=
  61 + make_directories(local_file);
60 if file(local_file, new) is 62 if file(local_file, new) is
61 { 63 {
62 - failure then println("Can't create \""+local_file+"\" file"), 64 + failure then println("Can't create \""+local_file+"\" file"); failure,
63 success(fd) then //the local file is open 65 success(fd) then //the local file is open
64 with start = message(_CXM_FTP_START_TRANSFERT), 66 with start = message(_CXM_FTP_START_TRANSFERT),
65 mQ.add_Message_to_send(start); 67 mQ.add_Message_to_send(start);
@@ -67,7 +69,7 @@ define One @@ -67,7 +69,7 @@ define One
67 } 69 }
68 . 70 .
69 71
70 -define One 72 +define Maybe(One)
71 get_file 73 get_file
72 ( 74 (
73 MessageQueue mQ, 75 MessageQueue mQ,
@@ -77,27 +79,26 @@ define One @@ -77,27 +79,26 @@ define One
77 with get_file_msg = message(_CXM_FTP_GET_FILE), 79 with get_file_msg = message(_CXM_FTP_GET_FILE),
78 if add_string(get_file_msg, "FileName", remote_file) is 80 if add_string(get_file_msg, "FileName", remote_file) is
79 { 81 {
80 - failure then unique, 82 + failure then failure,
81 success(_) then 83 success(_) then
82 mQ.add_Message_to_send(get_file_msg); 84 mQ.add_Message_to_send(get_file_msg);
83 println("_CXM_FTP_GET_FILE sent"); 85 println("_CXM_FTP_GET_FILE sent");
84 if wait_for_reply(mQ, _CXM_FTP_GET_FILE, 30) is 86 if wait_for_reply(mQ, _CXM_FTP_GET_FILE, 30) is
85 { 87 {
86 - failure then unique,  
87 - timeout then unique,  
88 - unknow_cmd then unique,  
89 - error then unique,  
90 - ok then unique, 88 + failure then failure,
  89 + timeout then failure,
  90 + unknow_cmd then failure,
  91 + error then failure,
  92 + ok then failure,
91 ok_msg(msg)then 93 ok_msg(msg)then
92 if find_int32(msg, "FileSize") is 94 if find_int32(msg, "FileSize") is
93 { 95 {
94 - failure then println("file size not found"); unique, 96 + failure then println("file size not found"); failure,
95 success(size) then 97 success(size) then
96 start_get_file_transtert(mQ, local_file, size) 98 start_get_file_transtert(mQ, local_file, size)
97 } 99 }
98 } 100 }
99 - }  
100 - . 101 + }.
101 102
102 103
103 define Bool 104 define Bool
@@ -125,7 +126,7 @@ define Bool @@ -125,7 +126,7 @@ define Bool
125 } 126 }
126 }. 127 }.
127 128
128 -public define One 129 +public define Maybe(One)
129 ftp_get_file 130 ftp_get_file
130 ( 131 (
131 String server, 132 String server,
@@ -136,16 +137,16 @@ public define One @@ -136,16 +137,16 @@ public define One
136 if dns(server) is ok(ip_adr) then 137 if dns(server) is ok(ip_adr) then
137 if connect( ip_adr, ip_port) is 138 if connect( ip_adr, ip_port) is
138 { 139 {
139 - error(_) then println("can't connect to ftp server"), 140 + error(_) then println("can't connect to ftp server"); failure,
140 ok(conn) then 141 ok(conn) then
141 with queue = create_MessageQueue, 142 with queue = create_MessageQueue,
142 message_transceiver(conn, queue); 143 message_transceiver(conn, queue);
143 if request_for_service(queue) then 144 if request_for_service(queue) then
144 get_file(queue, remote_file, local_file) 145 get_file(queue, remote_file, local_file)
145 else 146 else
146 - println("Service not found") 147 + println("Service not found");failure
147 } 148 }
148 else 149 else
149 - println("server "+server+" DNS error") 150 + println("server "+server+" DNS error");failure
150 . 151 .
151 152