Commit e753f5e8c1ea185989a5f2d9f22f06b66f8cf0b9

Authored by Cédric RICARD
1 parent ffacfd77

- added standard attributes to textarea

- NetServices : added TIMESTAMP field into service negotiation answer
- Renaming 'service' and 'version' fields to their upper case value.
calexium_lib/net_services/CXM_generic_client.anubis
@@ -93,7 +93,7 @@ define Maybe($T) @@ -93,7 +93,7 @@ define Maybe($T)
93 } 93 }
94 }. 94 }.
95 95
96 -public define (MessageQueue) -> Maybe($T) 96 +public define (MessageQueue, String) -> Maybe($T)
97 make_generic_handler 97 make_generic_handler
98 ( 98 (
99 Int32 timeout, 99 Int32 timeout,
@@ -101,7 +101,7 @@ public define (MessageQueue) -> Maybe($T) @@ -101,7 +101,7 @@ public define (MessageQueue) -> Maybe($T)
101 (Message) -> Maybe($T) handler, 101 (Message) -> Maybe($T) handler,
102 (String) -> One logger 102 (String) -> One logger
103 ) = 103 ) =
104 - (MessageQueue queue) |-> 104 + (MessageQueue queue, String timestamp) |->
105 generic_handler(queue, timeout, msg_to_send, handler, logger). 105 generic_handler(queue, timeout, msg_to_send, handler, logger).
106 106
107 define Maybe($T) 107 define Maybe($T)
@@ -110,12 +110,12 @@ define Maybe($T) @@ -110,12 +110,12 @@ define Maybe($T)
110 MessageQueue queue, 110 MessageQueue queue,
111 Int32 service_id, 111 Int32 service_id,
112 Int32 service_version, 112 Int32 service_version,
113 - (MessageQueue) -> Maybe($T) handler, 113 + (MessageQueue, String) -> Maybe($T) handler,
114 (String) -> One logger 114 (String) -> One logger
115 )= 115 )=
116 with test_msg = message(_CXM_REQUEST_FOR_SERVICE), 116 with test_msg = message(_CXM_REQUEST_FOR_SERVICE),
117 - forget(add_int32(test_msg, "service", service_id));  
118 - forget(add_int32(test_msg, "version", service_version)); 117 + forget(add_int32(test_msg, "SERVICE", service_id));
  118 + forget(add_int32(test_msg, "VERSION", service_version));
119 queue.add_Message_to_send(test_msg); 119 queue.add_Message_to_send(test_msg);
120 if queue.get_next_received_Message(10) is 120 if queue.get_next_received_Message(10) is
121 { 121 {
@@ -124,10 +124,20 @@ define Maybe($T) @@ -124,10 +124,20 @@ define Maybe($T)
124 msg(msg) then 124 msg(msg) then
125 if find_int32(msg, "STATUS") is 125 if find_int32(msg, "STATUS") is
126 { 126 {
127 - failure then logger("["+queue.get_name(unique)+"]: requesting service status not found");failure, 127 + failure then logger("["+queue.get_name(unique)+"]: requesting service STATUS not found");failure,
128 success(v) then 128 success(v) then
129 if v = _CXM_OK then 129 if v = _CXM_OK then
130 - handler(queue) 130 + if find_message(msg, "RESULT") is
  131 + {
  132 + failure then logger("["+queue.get_name(unique)+"]: requesting service RESULT not found");failure,
  133 + success(result) then
  134 + if find_string(msg, "TIMESTAMP") is
  135 + {
  136 + failure then logger("["+queue.get_name(unique)+"]: requesting service TIMESTAMP not found");failure,
  137 + success(timestamp) then
  138 + handler(queue, timestamp)
  139 + }
  140 + }
131 else 141 else
132 logger("["+queue.get_name(unique)+"]: requested service started won't start");failure 142 logger("["+queue.get_name(unique)+"]: requested service started won't start");failure
133 } 143 }
@@ -141,7 +151,7 @@ public define Maybe($T) @@ -141,7 +151,7 @@ public define Maybe($T)
141 Int32 port, 151 Int32 port,
142 Int32 service_id, 152 Int32 service_id,
143 Int32 service_version, 153 Int32 service_version,
144 - (MessageQueue) -> Maybe($T) handler, 154 + (MessageQueue, String) -> Maybe($T) handler,
145 (String) -> One logger 155 (String) -> One logger
146 ) 156 )
147 = 157 =
calexium_lib/net_services/CXM_generic_protocol.anubis
@@ -14,9 +14,10 @@ read tools/basis.anubis @@ -14,9 +14,10 @@ read tools/basis.anubis
14 read system/message_queue.anubis 14 read system/message_queue.anubis
15 read calexium_lib/CXM_message_constants.anubis 15 read calexium_lib/CXM_message_constants.anubis
16 16
17 -public define Int32 _CXM_OK = 0.  
18 -public define Int32 _CXM_ERROR = 1.  
19 -public define Int32 _CXM_UNKNOW_CMD = 2. 17 +public define Int32 _CXM_OK = 0.
  18 +public define Int32 _CXM_ERROR = 1.
  19 +public define Int32 _CXM_UNKNOW_CMD = 2.
  20 +public define Int32 _CXM_UNKNOW_SERVICE = 2.
20 21
21 public type ProtocolResult: 22 public type ProtocolResult:
22 failure, 23 failure,
@@ -30,14 +31,26 @@ public define One @@ -30,14 +31,26 @@ public define One
30 send_ACK_error 31 send_ACK_error
31 ( 32 (
32 MessageQueue queue, 33 MessageQueue queue,
33 - Int32 cmd_id 34 + Int32 cmd_id,
  35 + Int32 error_code,
  36 + String error_string,
34 )= 37 )=
35 with err_msg = message(_CXM_ACK), 38 with err_msg = message(_CXM_ACK),
36 forget(add_int32(err_msg, "CMD", cmd_id)); 39 forget(add_int32(err_msg, "CMD", cmd_id));
37 - forget(add_int32(err_msg, "STATUS", _CXM_ERROR)); 40 + forget(add_int32(err_msg, "STATUS", error_code));
  41 + (if error_string /= "" then forget(add_string(err_msg, "STATUS_STR", error_string))
  42 + else unique);
38 forget(queue.add_Message_to_send(err_msg)). 43 forget(queue.add_Message_to_send(err_msg)).
39 44
40 public define One 45 public define One
  46 + send_ACK_error
  47 + (
  48 + MessageQueue queue,
  49 + Int32 cmd_id
  50 + )=
  51 + send_ACK_error(queue, cmd_id, _CXM_ERROR, "").
  52 +
  53 +public define One
41 send_ACK_ok 54 send_ACK_ok
42 ( 55 (
43 MessageQueue queue, 56 MessageQueue queue,
calexium_lib/net_services/CXM_net_services.anubis
@@ -21,7 +21,7 @@ public type NetService: @@ -21,7 +21,7 @@ public type NetService:
21 Int32 version, 21 Int32 version,
22 Int32 id, 22 Int32 id,
23 String name, 23 String name,
24 - (MessageQueue, String) -> One handler 24 + (MessageQueue, String, String) -> One handler // Parameters are MessageQueue, peer IP and timestamp string
25 ). 25 ).
26 26
27 define One 27 define One
@@ -67,16 +67,34 @@ define Maybe(NetService) @@ -67,16 +67,34 @@ define Maybe(NetService)
67 Message msg, 67 Message msg,
68 List(NetService) net_services 68 List(NetService) net_services
69 )= 69 )=
70 - if find_int32(msg, "service") is 70 + if find_int32(msg, "SERVICE") is
71 { 71 {
72 - failure then send_ACK_error(queue, _CXM_REQUEST_FOR_SERVICE); failure, 72 + failure then //send_ACK_error(queue, _CXM_REQUEST_FOR_SERVICE); failure,
  73 + // old names... should be removed soon
  74 + if find_int32(msg, "service") is
  75 + {
  76 + failure then send_ACK_error(queue, _CXM_REQUEST_FOR_SERVICE); failure,
  77 + success(service_id) then
  78 + if find_int32(msg, "version") is
  79 + {
  80 + failure then send_ACK_error(queue, _CXM_REQUEST_FOR_SERVICE);failure,
  81 + success(service_version) then find_service(net_services, service_id, service_version)
  82 + }
  83 + }
  84 +
73 success(service_id) then 85 success(service_id) then
74 - if find_int32(msg, "version") is 86 + if find_int32(msg, "VERSION") is
75 { 87 {
76 failure then send_ACK_error(queue, _CXM_REQUEST_FOR_SERVICE);failure, 88 failure then send_ACK_error(queue, _CXM_REQUEST_FOR_SERVICE);failure,
77 success(service_version) then find_service(net_services, service_id, service_version) 89 success(service_version) then find_service(net_services, service_id, service_version)
78 } 90 }
79 }. 91 }.
  92 +
  93 +define String
  94 + get_time_stamp
  95 + =
  96 + with time = (UTime) now,
  97 + "<"+virtual_machine_id+"@"+time.seconds+">".
80 98
81 /** This message_received function just handle the negociation process the available net_services. 99 /** This message_received function just handle the negociation process the available net_services.
82 * In other words, it only recognize the _CXM_REQUEST_FOR_SERVICE message and try to launch the 100 * In other words, it only recognize the _CXM_REQUEST_FOR_SERVICE message and try to launch the
@@ -97,13 +115,16 @@ define One @@ -97,13 +115,16 @@ define One
97 if has_service(queue, msg, net_services) is 115 if has_service(queue, msg, net_services) is
98 { 116 {
99 failure then 117 failure then
100 - send_ACK_error(queue, _CXM_REQUEST_FOR_SERVICE), 118 + send_ACK_error(queue, _CXM_REQUEST_FOR_SERVICE, _CXM_UNKNOW_SERVICE, "Unknown service")
101 success(net_service) then 119 success(net_service) then
102 - send_ACK_ok(queue, _CXM_REQUEST_FOR_SERVICE);  
103 - net_service.handler(queue, peer) 120 + with result = message(0),
  121 + timestamp = get_time_stamp,
  122 + forget(add_string(result, "TIMESTAMP", timestamp));
  123 + send_ACK_ok(queue, _CXM_REQUEST_FOR_SERVICE, result);
  124 + net_service.handler(queue, peer, timestamp)
104 } 125 }
105 else 126 else
106 - unique 127 + send_ACK_error(queue, *msg.what, _CXM_UNKNOW_CMD, "Unknown command [" + (*msg.what) + "]")
107 . 128 .
108 129
109 /** 130 /**
@@ -155,7 +176,6 @@ public define Maybe(Server) @@ -155,7 +176,6 @@ public define Maybe(Server)
155 Int32 network_port, 176 Int32 network_port,
156 Var(Bool) shutdown_required 177 Var(Bool) shutdown_required
157 )= 178 )=
158 - //TODO change the port number in the real world  
159 if start_server(0, 179 if start_server(0,
160 network_port, 180 network_port,
161 net_services_handler(net_services), 181 net_services_handler(net_services),
calexium_lib/web/CXM_making_a_web_site.anubis
@@ -973,6 +973,7 @@ public define Actioner_Aspect @@ -973,6 +973,7 @@ public define Actioner_Aspect
973 973
974 974
975 public type TextAreaOption: 975 public type TextAreaOption:
  976 + input_attrs(List(InputAttrs)),
976 disabled, 977 disabled,
977 read_only, 978 read_only,
978 wrap_lines. 979 wrap_lines.
@@ -3547,9 +3548,10 @@ define Printable_tree @@ -3547,9 +3548,10 @@ define Printable_tree
3547 [] then [], 3548 [] then [],
3548 [h . t] then if h is 3549 [h . t] then if h is
3549 { 3550 {
3550 - disabled then [" disabled " . format1(t)]  
3551 - read_only then [" readonly " . format1(t)]  
3552 - wrap_lines then [" wrap " . format1(t)] 3551 + input_attrs(input_attr_list) then [format_attrs(input_attr_list) . format1(t)],
  3552 + disabled then [" disabled=\"disabled\" " . format1(t)]
  3553 + read_only then [" readonly=\"readonly\" " . format1(t)]
  3554 + wrap_lines then [" wrap=\"wrap\" " . format1(t)]
3553 } 3555 }
3554 }. 3556 }.
3555 3557
@@ -3560,7 +3562,7 @@ define Printable_tree @@ -3560,7 +3562,7 @@ define Printable_tree
3560 ) = 3562 ) =
3561 if member(l,wrap_lines) 3563 if member(l,wrap_lines)
3562 then format1(l) 3564 then format1(l)
3563 - else [" wrap=off " . format1(l)]. 3565 + else [" wrap=\"off\" " . format1(l)].
3564 3566
3565 3567
3566 *** [5.7] Formating elements which may be put anywhere. 3568 *** [5.7] Formating elements which may be put anywhere.