Commit 8552e1805babc6d6f6546d80a9456e35a07fda63
1 parent
88fedcba
[+] add logLevel into logger
Showing
3 changed files
with
160 additions
and
142 deletions
Show diff stats
net_services/CXM_generic_client.anubis
| ... | ... | @@ -8,6 +8,7 @@ |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | 10 | transmit system/message_transceiver.anubis |
| 11 | +transmit system/logger.anubis | |
| 11 | 12 | transmit calexium_lib/net_services_protocols/logger_service.anubis |
| 12 | 13 | |
| 13 | 14 | transmit calexium_lib/CXM_message_constants.anubis |
| ... | ... | @@ -66,24 +67,24 @@ public define Maybe(NetServiceAnswer) |
| 66 | 67 | */ |
| 67 | 68 | generic_send_message |
| 68 | 69 | ( |
| 69 | - MessageQueue queue, | |
| 70 | - Message msg_to_send, | |
| 71 | - Int timeout, | |
| 72 | - String logger_name | |
| 70 | + MessageQueue queue, | |
| 71 | + Message msg_to_send, | |
| 72 | + Int timeout, | |
| 73 | + (LogLevel, String) -> One logger | |
| 73 | 74 | )= |
| 74 | 75 | queue.add_Message_to_send(msg_to_send); |
| 75 | 76 | if queue.get_next_received_Message(timeout) is |
| 76 | 77 | { |
| 77 | - timeout then logError(logger_name, "["+queue.get_name(unique)+"]: receive timeout");failure, | |
| 78 | - closed then logError(logger_name, "["+queue.get_name(unique)+"]: socket closed");failure, | |
| 78 | + timeout then logger(logError, "["+queue.get_name(unique)+"]: receive timeout");failure, | |
| 79 | + closed then logger(logError, "["+queue.get_name(unique)+"]: socket closed");failure, | |
| 79 | 80 | msg(msg) then |
| 80 | 81 | if find_int32(msg, "CMD") is |
| 81 | 82 | { |
| 82 | - failure then logError(logger_name, "["+queue.get_name(unique)+"]: CMD field not found"); failure, | |
| 83 | + failure then logger(logError, "["+queue.get_name(unique)+"]: CMD field not found"); failure, | |
| 83 | 84 | success(cmd) then |
| 84 | 85 | if find_int32(msg, "STATUS") is |
| 85 | 86 | { |
| 86 | - failure then logError(logger_name, "["+queue.get_name(unique)+"]: STATUS field not found"); failure, | |
| 87 | + failure then logger(logError, "["+queue.get_name(unique)+"]: STATUS field not found"); failure, | |
| 87 | 88 | success(v) then |
| 88 | 89 | if v = _CXM_OK then |
| 89 | 90 | success(netservice_ok(cmd, find_message(msg, "RESULT"))) |
| ... | ... | @@ -102,7 +103,7 @@ public define Maybe($T) |
| 102 | 103 | Int timeout, |
| 103 | 104 | Message msg_to_send, |
| 104 | 105 | (Message, MessageQueue, String) -> Maybe($T) handler, |
| 105 | - (String) -> One logger | |
| 106 | + (LogLevel, String) -> One logger | |
| 106 | 107 | ) = |
| 107 | 108 | if generic_send_message(queue, msg_to_send, timeout, logger) is |
| 108 | 109 | { |
| ... | ... | @@ -111,12 +112,12 @@ public define Maybe($T) |
| 111 | 112 | if net_result is |
| 112 | 113 | { |
| 113 | 114 | netservice_error(cmd, err_code, err_str) then |
| 114 | - logger("["+queue.get_name(unique)+"]: message status ERROR [0x" + to_hexa(err_code) + ", '" + err_str + "']"); | |
| 115 | + logger(logError, "["+queue.get_name(unique)+"]: message status ERROR [0x" + to_hexa(err_code) + ", '" + err_str + "']"); | |
| 115 | 116 | failure, |
| 116 | 117 | netservice_ok(cmd, mb_msg) then |
| 117 | 118 | if mb_msg is |
| 118 | 119 | { |
| 119 | - failure then logger("["+queue.get_name(unique)+"]: can't find RESULT message."); failure, | |
| 120 | + failure then logger(logError,"["+queue.get_name(unique)+"]: can't find RESULT message."); failure, | |
| 120 | 121 | success(result) then handler(result, queue, timestamp) |
| 121 | 122 | } |
| 122 | 123 | } |
| ... | ... | @@ -125,10 +126,10 @@ public define Maybe($T) |
| 125 | 126 | public define Maybe(One) |
| 126 | 127 | no_result_handler |
| 127 | 128 | ( |
| 128 | - MessageQueue queue, | |
| 129 | - Int timeout, | |
| 130 | - Message msg_to_send, | |
| 131 | - (String) -> One logger | |
| 129 | + MessageQueue queue, | |
| 130 | + Int timeout, | |
| 131 | + Message msg_to_send, | |
| 132 | + (LogLevel, String) -> One logger | |
| 132 | 133 | ) = |
| 133 | 134 | if generic_send_message(queue, msg_to_send, timeout, logger) is |
| 134 | 135 | { |
| ... | ... | @@ -137,13 +138,13 @@ public define Maybe(One) |
| 137 | 138 | if net_result is |
| 138 | 139 | { |
| 139 | 140 | netservice_error(cmd, err_code, err_str) then |
| 140 | - logger("["+queue.get_name(unique)+"]: message status ERROR [0x" + to_hexa(err_code) + ", '" + err_str + "']"); | |
| 141 | + logger(logError, "["+queue.get_name(unique)+"]: message status ERROR [0x" + to_hexa(err_code) + ", '" + err_str + "']"); | |
| 141 | 142 | failure, |
| 142 | 143 | netservice_ok(cmd, mb_msg) then |
| 143 | 144 | if mb_msg is |
| 144 | 145 | { |
| 145 | 146 | failure then unique, |
| 146 | - success(result) then logger("An unattended RESULT msg was found. Ignoring it...") | |
| 147 | + success(result) then logger(logError, "An unattended RESULT msg was found. Ignoring it...") | |
| 147 | 148 | }; |
| 148 | 149 | success(unique) |
| 149 | 150 | } |
| ... | ... | @@ -155,7 +156,7 @@ public define (MessageQueue, String) -> Maybe($T) |
| 155 | 156 | Int timeout, |
| 156 | 157 | Message msg_to_send, |
| 157 | 158 | (Message, MessageQueue, String) -> Maybe($T) handler, |
| 158 | - (String) -> One logger | |
| 159 | + (LogLevel, String) -> One logger | |
| 159 | 160 | ) = |
| 160 | 161 | (MessageQueue queue, String timestamp) |-> |
| 161 | 162 | simple_handler(queue, timestamp, timeout, msg_to_send, handler, logger). |
| ... | ... | @@ -168,7 +169,7 @@ define Maybe($T) |
| 168 | 169 | Word32 service_version, |
| 169 | 170 | String domain, |
| 170 | 171 | (MessageQueue, String) -> Maybe($T) handler, |
| 171 | - (String) -> One logger | |
| 172 | + (LogLevel, String) -> One logger | |
| 172 | 173 | )= |
| 173 | 174 | with test_msg = message(_CXM_REQUEST_FOR_SERVICE), |
| 174 | 175 | forget(add_int32(test_msg, "SERVICE", service_id)); |
| ... | ... | @@ -177,71 +178,71 @@ define Maybe($T) |
| 177 | 178 | queue.add_Message_to_send(test_msg); |
| 178 | 179 | if queue.get_next_received_Message(10) is |
| 179 | 180 | { |
| 180 | - timeout then logger("["+queue.get_name(unique)+"]: requesting service receive timeout");failure, | |
| 181 | - closed then logger("["+queue.get_name(unique)+"]: requesting service socket closed");failure, | |
| 181 | + timeout then logger(logError, "["+queue.get_name(unique)+"]: requesting service receive timeout");failure, | |
| 182 | + closed then logger(logError, "["+queue.get_name(unique)+"]: requesting service socket closed");failure, | |
| 182 | 183 | msg(msg) then |
| 183 | 184 | if find_int32(msg, "STATUS") is |
| 184 | 185 | { |
| 185 | - failure then logger("["+queue.get_name(unique)+"]: requesting service STATUS not found");failure, | |
| 186 | + failure then logger(logError, "["+queue.get_name(unique)+"]: requesting service STATUS not found");failure, | |
| 186 | 187 | success(v) then |
| 187 | 188 | if v = _CXM_OK then |
| 188 | 189 | if find_message(msg, "RESULT") is |
| 189 | 190 | { |
| 190 | - failure then logger("["+queue.get_name(unique)+"]: requesting service RESULT not found");failure, | |
| 191 | + failure then logger(logError, "["+queue.get_name(unique)+"]: requesting service RESULT not found");failure, | |
| 191 | 192 | success(result) then |
| 192 | 193 | with timestamp = if find_string(result, "TIMESTAMP") is |
| 193 | 194 | { |
| 194 | - failure then logger("["+queue.get_name(unique)+"]: requesting service TIMESTAMP not found"); "", | |
| 195 | + failure then logger(logError, "["+queue.get_name(unique)+"]: requesting service TIMESTAMP not found"); "", | |
| 195 | 196 | success(timestamp) then timestamp |
| 196 | 197 | }, |
| 197 | 198 | handler(queue, timestamp) |
| 198 | 199 | } |
| 199 | 200 | else |
| 200 | - logger("["+queue.get_name(unique)+"]: the requested service is not available on server.");failure | |
| 201 | + logger(logError, "["+queue.get_name(unique)+"]: the requested service is not available on server.");failure | |
| 201 | 202 | } |
| 202 | 203 | }. |
| 203 | 204 | |
| 204 | -define Maybe($T) | |
| 205 | - generic_request_for_service | |
| 206 | - ( | |
| 207 | - MessageQueue queue, | |
| 208 | - Word32 service_id, | |
| 209 | - Word32 service_version, | |
| 210 | - String domain, | |
| 211 | - (MessageQueue, String) -> Maybe($T) handler, | |
| 212 | - String logger | |
| 213 | - )= | |
| 214 | - with test_msg = message(_CXM_REQUEST_FOR_SERVICE), | |
| 215 | - forget(add_int32(test_msg, "SERVICE", service_id)); | |
| 216 | - forget(add_int32(test_msg, "VERSION", service_version)); | |
| 217 | - forget(add_string(test_msg, "DOMAIN", domain)); | |
| 218 | - queue.add_Message_to_send(test_msg); | |
| 219 | - if queue.get_next_received_Message(10) is | |
| 220 | - { | |
| 221 | - timeout then logError(logger, "["+queue.get_name(unique)+"]: requesting service receive timeout");failure, | |
| 222 | - closed then logError(logger, "["+queue.get_name(unique)+"]: requesting service socket closed");failure, | |
| 223 | - msg(msg) then | |
| 224 | - if find_int32(msg, "STATUS") is | |
| 225 | - { | |
| 226 | - failure then logError(logger, "["+queue.get_name(unique)+"]: requesting service STATUS not found");failure, | |
| 227 | - success(v) then | |
| 228 | - if v = _CXM_OK then | |
| 229 | - if find_message(msg, "RESULT") is | |
| 230 | - { | |
| 231 | - failure then logError(logger, "["+queue.get_name(unique)+"]: requesting service RESULT not found");failure, | |
| 232 | - success(result) then | |
| 233 | - with timestamp = if find_string(result, "TIMESTAMP") is | |
| 234 | - { | |
| 235 | - failure then logError(logger, "["+queue.get_name(unique)+"]: requesting service TIMESTAMP not found"); "", | |
| 236 | - success(timestamp) then timestamp | |
| 237 | - }, | |
| 238 | - handler(queue, timestamp) | |
| 239 | - } | |
| 240 | - else | |
| 241 | - logError(logger, "["+queue.get_name(unique)+"]: the requested service is not available on server.");failure | |
| 242 | - } | |
| 243 | - }. | |
| 244 | - | |
| 205 | +// define Maybe($T) | |
| 206 | +// generic_request_for_service | |
| 207 | +// ( | |
| 208 | +// MessageQueue queue, | |
| 209 | +// Word32 service_id, | |
| 210 | +// Word32 service_version, | |
| 211 | +// String domain, | |
| 212 | +// (MessageQueue, String) -> Maybe($T) handler, | |
| 213 | +// (LogLevel, String) -> One logger | |
| 214 | +// )= | |
| 215 | +// with test_msg = message(_CXM_REQUEST_FOR_SERVICE), | |
| 216 | +// forget(add_int32(test_msg, "SERVICE", service_id)); | |
| 217 | +// forget(add_int32(test_msg, "VERSION", service_version)); | |
| 218 | +// forget(add_string(test_msg, "DOMAIN", domain)); | |
| 219 | +// queue.add_Message_to_send(test_msg); | |
| 220 | +// if queue.get_next_received_Message(10) is | |
| 221 | +// { | |
| 222 | +// timeout then logger(logError, "["+queue.get_name(unique)+"]: requesting service receive timeout");failure, | |
| 223 | +// closed then logger(logError, "["+queue.get_name(unique)+"]: requesting service socket closed");failure, | |
| 224 | +// msg(msg) then | |
| 225 | +// if find_int32(msg, "STATUS") is | |
| 226 | +// { | |
| 227 | +// failure then logger(logError, "["+queue.get_name(unique)+"]: requesting service STATUS not found");failure, | |
| 228 | +// success(v) then | |
| 229 | +// if v = _CXM_OK then | |
| 230 | +// if find_message(msg, "RESULT") is | |
| 231 | +// { | |
| 232 | +// failure then logger(logError, "["+queue.get_name(unique)+"]: requesting service RESULT not found");failure, | |
| 233 | +// success(result) then | |
| 234 | +// with timestamp = if find_string(result, "TIMESTAMP") is | |
| 235 | +// { | |
| 236 | +// failure then logger(logError, "["+queue.get_name(unique)+"]: requesting service TIMESTAMP not found"); "", | |
| 237 | +// success(timestamp) then timestamp | |
| 238 | +// }, | |
| 239 | +// handler(queue, timestamp) | |
| 240 | +// } | |
| 241 | +// else | |
| 242 | +// logger(logError, "["+queue.get_name(unique)+"]: the requested service is not available on server.");failure | |
| 243 | +// } | |
| 244 | +// }. | |
| 245 | +// | |
| 245 | 246 | public define Maybe(MessageQueue) |
| 246 | 247 | get_message_queue_to_net_service |
| 247 | 248 | ( |
| ... | ... | @@ -252,12 +253,12 @@ public define Maybe(MessageQueue) |
| 252 | 253 | Word32 service_version, |
| 253 | 254 | String domain, |
| 254 | 255 | (MessageQueue, String) -> Maybe(One) handler, //1st function to apply if need (i.e authentication to remote service) |
| 255 | - String logger | |
| 256 | + (LogLevel, String) -> One logger | |
| 256 | 257 | ) |
| 257 | 258 | = |
| 258 | 259 | if connect( server, port) is |
| 259 | 260 | { |
| 260 | - error(_) then logError(logger, queue_name + ": Can't connect to service ["+ip_addr_to_string(server)+":"+port+"]");failure, | |
| 261 | + error(_) then logger(logError, queue_name + ": Can't connect to service ["+ip_addr_to_string(server)+":"+port+"]");failure, | |
| 261 | 262 | ok(conn) then |
| 262 | 263 | // println("[" + virtual_machine_id + "] netservices create queue"); |
| 263 | 264 | with queue = create_MessageQueue(queue_name, tcp(conn)), |
| ... | ... | @@ -267,7 +268,7 @@ public define Maybe(MessageQueue) |
| 267 | 268 | { |
| 268 | 269 | failure then |
| 269 | 270 | //we can't apply first function correctly, so we ask to Message Queue to quit and return failure |
| 270 | - logError(logger, "can't apply first function correctly"); | |
| 271 | + logger(logError, "can't apply first function correctly"); | |
| 271 | 272 | queue.quit(unique); |
| 272 | 273 | failure, |
| 273 | 274 | success(_) then success(queue) |
| ... | ... | @@ -285,12 +286,12 @@ public define Maybe($T) |
| 285 | 286 | Word32 service_version, |
| 286 | 287 | String domain, |
| 287 | 288 | (MessageQueue, String) -> Maybe($T) handler, |
| 288 | - (String) -> One logger | |
| 289 | + (LogLevel, String) -> One logger | |
| 289 | 290 | ) |
| 290 | 291 | = |
| 291 | 292 | if connect( server, port) is |
| 292 | 293 | { |
| 293 | - error(_) then logger(queue_name + ": Can't connect to service ["+ip_addr_to_string(server)+":"+port+"]");failure, | |
| 294 | + error(_) then logger(logError, queue_name + ": Can't connect to service ["+ip_addr_to_string(server)+":"+port+"]");failure, | |
| 294 | 295 | ok(conn) then |
| 295 | 296 | // println("[" + virtual_machine_id + "] netservices create queue"); |
| 296 | 297 | with queue = create_MessageQueue(queue_name, tcp(conn)), |
| ... | ... | @@ -313,7 +314,7 @@ public define Maybe($T) |
| 313 | 314 | Word32 service_id, |
| 314 | 315 | Word32 service_version, |
| 315 | 316 | (MessageQueue, String) -> Maybe($T) handler, |
| 316 | - (String) -> One logger | |
| 317 | + (LogLevel, String) -> One logger | |
| 317 | 318 | ) |
| 318 | 319 | = |
| 319 | 320 | generic_connect_to_net_service(queue_name, server, port, service_id, service_version, "", handler, logger). |
| ... | ... | @@ -322,37 +323,38 @@ define Word32 |
| 322 | 323 | get_ip |
| 323 | 324 | ( |
| 324 | 325 | String url_or_ip, |
| 325 | - (String) -> One logger | |
| 326 | + (LogLevel, String) -> One logger | |
| 326 | 327 | ) = |
| 327 | - //logInfo(debug_log,"Try to resolve URL [" + url_or_ip+ "]."); | |
| 328 | + logger(logTrace, "Try to resolve URL [" + url_or_ip+ "]."); | |
| 328 | 329 | if ip_address(url_or_ip) is success(ip) then |
| 329 | - //logInfo(debug_log,"Try to resolve URL OK ip"+ip); | |
| 330 | + logger(logTrace, "Try to resolve URL OK ip"+ip); | |
| 330 | 331 | ip |
| 331 | 332 | else if dns(url_or_ip) is ok(ip_adr) then |
| 332 | - //logInfo(debug_log,"Try to resolve URL OK dns"+ip_adr); | |
| 333 | + logger(logTrace, "Try to resolve URL OK dns"+ip_adr); | |
| 333 | 334 | ip_adr |
| 334 | 335 | else |
| 335 | - logger("Can't resolve URL [" + url_or_ip+ "]. Using localhost."); | |
| 336 | + logger(logError, "Can't resolve URL [" + url_or_ip+ "]. Using localhost (127.0.0.1) ."); | |
| 336 | 337 | ip_address((127,0,0,1)). |
| 337 | 338 | |
| 338 | 339 | |
| 339 | 340 | public define Maybe(Word32) |
| 340 | 341 | mb_get_ip |
| 341 | 342 | ( |
| 342 | - String url_or_ip | |
| 343 | + String url_or_ip, | |
| 344 | + (LogLevel, String) -> One logger | |
| 343 | 345 | ) = |
| 344 | - //logInfo(debug_log,"Try to resolve URL [" + url_or_ip+ "]."); | |
| 346 | + logger(logTrace, "Try to resolve URL [" + url_or_ip+ "]."); | |
| 345 | 347 | if ip_address(url_or_ip) is success(ip) then |
| 346 | - //logInfo(debug_log,"Try to resolve URL OK ip"+ip); | |
| 348 | + logger(logTrace, "Try to resolve URL OK ip"+ip); | |
| 347 | 349 | success(ip) |
| 348 | 350 | else if dns(url_or_ip) is ok(ip_adr) then |
| 349 | - //logInfo(debug_log,"Try to resolve URL OK dns"+ip_adr); | |
| 351 | + logger(logTrace, "Try to resolve URL OK dns"+ip_adr); | |
| 350 | 352 | success(ip_adr) |
| 351 | 353 | else |
| 352 | - println("Can't resolve URL [" + url_or_ip+ "]."); | |
| 354 | + logger(logError, "Can't resolve URL [" + url_or_ip+ "]."); | |
| 353 | 355 | failure. |
| 354 | 356 | |
| 355 | -public define Word32 | |
| 357 | + public define Word32 | |
| 356 | 358 | get_ip |
| 357 | 359 | ( |
| 358 | 360 | String url_or_ip |
| ... | ... | @@ -377,7 +379,7 @@ public define Maybe($T) |
| 377 | 379 | Word32 service_version, |
| 378 | 380 | String domain, |
| 379 | 381 | (MessageQueue, String) -> Maybe($T) handler, |
| 380 | - (String) -> One logger | |
| 382 | + (LogLevel, String) -> One logger | |
| 381 | 383 | ) |
| 382 | 384 | = generic_connect_to_net_service(queue_name, get_ip(server, logger), port, service_id, service_version, domain, handler, logger). |
| 383 | 385 | |
| ... | ... | @@ -390,7 +392,7 @@ public define Maybe($T) |
| 390 | 392 | Word32 service_id, |
| 391 | 393 | Word32 service_version, |
| 392 | 394 | (MessageQueue, String) -> Maybe($T) handler, |
| 393 | - (String) -> One logger | |
| 395 | + (LogLevel, String) -> One logger | |
| 394 | 396 | ) |
| 395 | 397 | = generic_connect_to_net_service(queue_name, server, port, service_id, service_version, "", handler, logger). |
| 396 | 398 | |
| ... | ... | @@ -407,12 +409,12 @@ public define Maybe($T) |
| 407 | 409 | Word32 service_version, |
| 408 | 410 | String domain, |
| 409 | 411 | (MessageQueue, String) -> Maybe($T) handler, |
| 410 | - (String) -> One logger | |
| 412 | + (LogLevel, String) -> One logger | |
| 411 | 413 | ) |
| 412 | 414 | = |
| 413 | 415 | if open_SSL_connection( server_name, server_ip, port, accept_policy) is |
| 414 | 416 | { |
| 415 | - error(_) then logger(queue_name + ": Can't connect to domain manager ["+ip_addr_to_string(server_ip)+":"+port+"]");failure, | |
| 417 | + error(_) then logger(logError, queue_name + ": Can't connect to domain manager ["+ip_addr_to_string(server_ip)+":"+port+"]");failure, | |
| 416 | 418 | ok(conn) then |
| 417 | 419 | with queue = create_MessageQueue(queue_name, ssl(conn)), |
| 418 | 420 | message_transceiver(/*ssl(conn),*/ queue); |
| ... | ... | @@ -434,7 +436,7 @@ public define Maybe($T) |
| 434 | 436 | Word32 service_id, |
| 435 | 437 | Word32 service_version, |
| 436 | 438 | (MessageQueue, String) -> Maybe($T) handler, |
| 437 | - (String) -> One logger | |
| 439 | + (LogLevel, String) -> One logger | |
| 438 | 440 | ) |
| 439 | 441 | = generic_connect_to_net_service_SSL(queue_name, server_name, server_ip, port, accept_policy, service_id, service_version, "", handler, logger). |
| 440 | 442 | ... | ... |
net_services/CXM_net_services.anubis
| ... | ... | @@ -13,6 +13,7 @@ read system/muscle.anubis |
| 13 | 13 | read system/data_io.anubis |
| 14 | 14 | read system/message_queue.anubis |
| 15 | 15 | read system/message_transceiver.anubis |
| 16 | +read system/logger.anubis | |
| 16 | 17 | read CXM_generic_protocol.anubis |
| 17 | 18 | read calexium_lib/CXM_message_constants.anubis |
| 18 | 19 | |
| ... | ... | @@ -22,24 +23,27 @@ public type NetService: |
| 22 | 23 | Word32 id, |
| 23 | 24 | String name, |
| 24 | 25 | List(String) domains, |
| 25 | - (MessageQueue, String, String) -> One handler // Parameters are MessageQueue, peer IP and timestamp string | |
| 26 | - ). | |
| 26 | + (MessageQueue, String, String, (LogLevel, String) -> One ) -> One handler // Parameters are MessageQueue, peer IP and timestamp string, logger | |
| 27 | + ) | |
| 28 | +. | |
| 27 | 29 | |
| 28 | -define One | |
| 29 | - print_services | |
| 30 | +define String | |
| 31 | + dump_services | |
| 30 | 32 | ( |
| 31 | 33 | List(NetService) net_services |
| 32 | 34 | ) = |
| 33 | - | |
| 34 | - map_forget((NetService net_s)|-> | |
| 35 | - if net_s is net_service(version, id, name, domains, _) then | |
| 36 | - println(" id : 0x"+ to_hexa(id)); | |
| 37 | - println(" version : " + to_String(version)); | |
| 38 | - println(" name : "+ name ); | |
| 39 | - println(" domains : "); | |
| 40 | - map_forget((String domain) |-> println(" : "+domain), domains); | |
| 41 | - println("----------------------------------------") | |
| 42 | - ,net_services). | |
| 35 | + join("\n", map((NetService net_s) | |
| 36 | + |-> | |
| 37 | + if net_s is net_service(version, id, name, domains, _) then | |
| 38 | + " id : 0x"+ to_hexa(id)+"\n"+ | |
| 39 | + " version : " + to_String(version)+"\n"+ | |
| 40 | + " name : "+ name +"\n"+ | |
| 41 | + " domains : "+"\n"+ | |
| 42 | + join("\n",map((String domain) |-> " : "+domain, domains))+"\n"+ | |
| 43 | + "----------------------------------------\n" | |
| 44 | + ,net_services) | |
| 45 | + ) | |
| 46 | +. | |
| 43 | 47 | |
| 44 | 48 | /** Try to find the service_id in services_list. If the service is found in that list |
| 45 | 49 | * the corresponding NetService object is return |
| ... | ... | @@ -47,14 +51,14 @@ define One |
| 47 | 51 | define Maybe(NetService) |
| 48 | 52 | find_service |
| 49 | 53 | ( |
| 50 | - List(NetService) services_list, | |
| 51 | - Word32 service_id, | |
| 52 | - Word32 service_version, | |
| 53 | - String domain | |
| 54 | + List(NetService) services_list, //List of all available NetService | |
| 55 | + Word32 service_id, //requested service ID | |
| 56 | + Word32 service_version, //requested service Version | |
| 57 | + String domain //requested domain for above resquested service ID/version | |
| 54 | 58 | )= |
| 55 | 59 | if services_list is |
| 56 | 60 | { |
| 57 | - [] then failure, | |
| 61 | + [] then failure, | |
| 58 | 62 | [h . t] then |
| 59 | 63 | if h.id = service_id & h.version >=+ service_version then |
| 60 | 64 | if domain = "" then |
| ... | ... | @@ -65,7 +69,8 @@ define Maybe(NetService) |
| 65 | 69 | find_service(t, service_id, service_version, domain) |
| 66 | 70 | else |
| 67 | 71 | find_service(t, service_id, service_version, domain) |
| 68 | - }. | |
| 72 | + } | |
| 73 | +. | |
| 69 | 74 | |
| 70 | 75 | /** Check if the muscle message msg has the correct fields for requesting a net_services |
| 71 | 76 | * if we found "service" and "version" fields on the message, we try to find if the service |
| ... | ... | @@ -111,7 +116,8 @@ define Maybe(NetService) |
| 111 | 116 | success(domain) then find_service(net_services, service_id, service_version, domain) |
| 112 | 117 | } |
| 113 | 118 | } |
| 114 | - }. | |
| 119 | + } | |
| 120 | +. | |
| 115 | 121 | |
| 116 | 122 | define String |
| 117 | 123 | get_time_stamp |
| ... | ... | @@ -127,23 +133,26 @@ define String |
| 127 | 133 | define One |
| 128 | 134 | service_negociation |
| 129 | 135 | ( |
| 130 | - MessageQueue queue, | |
| 131 | - Message msg, | |
| 132 | - List(NetService) net_services, | |
| 133 | - String peer | |
| 136 | + MessageQueue queue, | |
| 137 | + Message msg, | |
| 138 | + List(NetService) net_services, | |
| 139 | + String peer, | |
| 140 | + (LogLevel, String) -> One logger | |
| 134 | 141 | )= |
| 135 | - //println("Service NEGOCIATION [" + to_hexa(*msg.what) + "] received"); | |
| 142 | + logger(logTrace, "Service NEGOCIATION [" + to_hexa(*msg.what) + "] received"); | |
| 136 | 143 | if * msg.what = _CXM_REQUEST_FOR_SERVICE then |
| 137 | 144 | if has_service(queue, msg, net_services) is |
| 138 | 145 | { |
| 139 | 146 | failure then |
| 147 | + logger(logError, "Unknown service"); | |
| 140 | 148 | send_ACK_error(queue, _CXM_REQUEST_FOR_SERVICE, _CXM_UNKNOW_SERVICE, "Unknown service") |
| 149 | + | |
| 141 | 150 | success(net_service) then |
| 142 | 151 | with result = message(0), |
| 143 | 152 | timestamp = get_time_stamp, |
| 144 | 153 | forget(add_string(result, "TIMESTAMP", timestamp)); |
| 145 | 154 | send_ACK_ok(queue, _CXM_REQUEST_FOR_SERVICE, result); |
| 146 | - net_service.handler(queue, peer, timestamp) | |
| 155 | + net_service.handler(queue, peer, timestamp, logger) | |
| 147 | 156 | } |
| 148 | 157 | else |
| 149 | 158 | send_ACK_error(queue, *msg.what, _CXM_UNKNOW_CMD, "Unknown command [" + (*msg.what) + "]") |
| ... | ... | @@ -155,59 +164,64 @@ define One |
| 155 | 164 | public define One |
| 156 | 165 | message_receiver |
| 157 | 166 | ( |
| 158 | - MessageQueue queue, | |
| 159 | - List(NetService) net_services, | |
| 160 | - String peer | |
| 167 | + MessageQueue queue, | |
| 168 | + List(NetService) net_services, | |
| 169 | + String peer, | |
| 170 | + (LogLevel, String) -> One logger | |
| 161 | 171 | ) = |
| 162 | 172 | if queue.quit_requested(unique) then |
| 163 | 173 | unique |
| 164 | 174 | else |
| 165 | - //println("PRE SERVICE message_receiver "+"["+virtual_machine_id + "]"); | |
| 175 | + logger(logTrace,"PRE SERVICE message_receiver ["+virtual_machine_id + "]"); | |
| 166 | 176 | if queue.get_next_received_Message(1) is |
| 167 | 177 | { |
| 168 | 178 | timeout then //println("PRE timeout"); |
| 169 | - message_receiver(queue, net_services, peer), | |
| 170 | - closed then //println("PRE closed"); | |
| 179 | + message_receiver(queue, net_services, peer, logger), | |
| 180 | + closed then | |
| 181 | + logger(logTrace,"PRE SERVICE message_receiver ["+virtual_machine_id + "] closed"); | |
| 171 | 182 | unique, |
| 172 | 183 | msg(msg) then unique; //println("PRE negociation"); |
| 173 | - service_negociation(queue, msg, net_services, peer); | |
| 174 | - message_receiver(queue, net_services, peer) | |
| 184 | + service_negociation(queue, msg, net_services, peer, logger); | |
| 185 | + message_receiver(queue, net_services, peer, logger) | |
| 175 | 186 | }. |
| 176 | 187 | |
| 177 | 188 | define Server -> (RWStream) -> One |
| 178 | 189 | net_services_handler |
| 179 | 190 | ( |
| 180 | - List(NetService) net_services, | |
| 191 | + List(NetService) net_services, | |
| 192 | + (LogLevel, String) -> One logger | |
| 181 | 193 | ) = |
| 182 | 194 | (Server server) |-> (RWStream conn) |-> |
| 183 | 195 | if remote_IP_address_and_port(conn) is (num_peer,_) then |
| 184 | 196 | //convert IP address of the client to string |
| 185 | 197 | with peer = ip_addr_to_string(num_peer), |
| 186 | - //println("NET SERVICES Accepting connection with "+peer); | |
| 198 | + logger(logInfo,"NET SERVICES Accepting connection with "+peer); | |
| 187 | 199 | |
| 188 | 200 | //now managing the list of SERVICES |
| 189 | 201 | with queue = create_MessageQueue("CXM Net Services", tcp(conn)), |
| 190 | - message_transceiver(/*conn,*/ queue); | |
| 191 | - message_receiver(queue, net_services, peer). | |
| 202 | + message_transceiver(queue); | |
| 203 | + message_receiver(queue, net_services, peer, logger). | |
| 192 | 204 | |
| 193 | 205 | |
| 194 | 206 | public define Maybe(Server) |
| 195 | 207 | start_net_services |
| 196 | 208 | ( |
| 197 | - List(NetService) net_services, | |
| 198 | - Word32 network_port, | |
| 209 | + List(NetService) net_services, | |
| 210 | + Word32 network_port, | |
| 211 | + (LogLevel, String) -> One logger | |
| 199 | 212 | )= |
| 200 | 213 | if start_server(0, |
| 201 | 214 | network_port, |
| 202 | - net_services_handler(net_services), | |
| 215 | + net_services_handler(net_services, logger), | |
| 203 | 216 | (One u) |-> unique) is |
| 204 | 217 | { |
| 205 | - cannot_create_the_socket then println("Cannot create the listening socket."); failure, | |
| 206 | - cannot_bind_to_port then println("Cannot bind to port " + network_port ); failure, | |
| 207 | - cannot_listen_on_port then println("Cannot listen on port " + network_port); failure, | |
| 218 | + cannot_create_the_socket then logger(logError, "Cannot create the listening socket."); failure, | |
| 219 | + cannot_bind_to_port then logger(logError, "Cannot bind to port " + network_port); failure, | |
| 220 | + cannot_listen_on_port then logger(logError, "Cannot listen on port " + network_port); failure, | |
| 208 | 221 | ok(server) then |
| 209 | - println("Net services started on port " + network_port); | |
| 210 | - println("------ Available services ------"); | |
| 211 | - print_services(net_services); | |
| 222 | + logger(logInfo, "Net services started on port " + network_port); | |
| 223 | + logger(logInfo, "------ Available services ------"); | |
| 224 | + logger(logInfo, dump_services(net_services)); | |
| 212 | 225 | success(server) |
| 213 | - }. | |
| 226 | + } | |
| 227 | +. | ... | ... |
net_services_protocols/ftp_client.anubis
| ... | ... | @@ -145,18 +145,19 @@ public define Maybe(One) |
| 145 | 145 | String remote_file, |
| 146 | 146 | String local_file, |
| 147 | 147 | Bool ftp, |
| 148 | + (LogLevel, String) -> One logger | |
| 148 | 149 | ) = |
| 149 | - if mb_get_ip(server) is | |
| 150 | + if mb_get_ip(server, logger) is | |
| 150 | 151 | { |
| 151 | - failure then println("server "+server+" DNS error");failure, | |
| 152 | + failure then logger(logError, "server "+server+" DNS error");failure, | |
| 152 | 153 | success(ip_adr) then |
| 153 | 154 | if connect( ip_adr, ip_port) is |
| 154 | 155 | { |
| 155 | - error(_) then println("can't connect to ftp server"); failure, | |
| 156 | + error(_) then logger(logError, "can't connect to ftp server"); failure, | |
| 156 | 157 | ok(conn) then |
| 157 | 158 | with queue = create_MessageQueue("ftp_get_file", tcp(conn)), |
| 158 | 159 | message_transceiver(/*conn,*/ queue); |
| 159 | - println("request for ftp service"); | |
| 160 | + logger(logInfo, "request for ftp service"); | |
| 160 | 161 | if request_for_service(queue) then |
| 161 | 162 | with result = get_file(queue, remote_file, local_file, ftp), |
| 162 | 163 | queue.quit(unique);result |
| ... | ... | @@ -177,6 +178,7 @@ public define Maybe(One) |
| 177 | 178 | Word32 ip_port, |
| 178 | 179 | String remote_file, |
| 179 | 180 | String local_file, |
| 181 | + (LogLevel, String) -> One logger | |
| 180 | 182 | ) = |
| 181 | - ftp_get_file(server, ip_port, remote_file, local_file, false). | |
| 183 | + ftp_get_file(server, ip_port, remote_file, local_file, false, logger). | |
| 182 | 184 | ... | ... |