Commit c84cf0a2047f6c9221260854db777fff74b01d08

Authored by Cédric RICARD
1 parent c6903c95

Base for CXM errors handling on Net Services

calexium_lib/CXM_errors.anubis 0 → 100644
  1 +/*
  2 + * Created by PyramIDE.
  3 + * User: ricard
  4 + * Date: 16/09/2007
  5 + * Time: 21:10
  6 + *
  7 + * To change this template use Tools | Options | Coding | Edit Standard Headers.
  8 + */
  9 +
  10 +public type GeneralError:
  11 + ok,
  12 + unknown(Int32 val),
  13 + bad_type,
  14 + bad_value,
  15 + bad_parameters,
  16 + no_init,
  17 + unknown_command,
  18 + wrong_authentification, // Wrong login or password
  19 + access_denied. // login ok but no suffisiant right to access to this area. Can be use with wrong authentification too...
  20 +
  21 +public define Int32
  22 + to_Int32
  23 + (
  24 + GeneralError e
  25 + ) =
  26 + if e is
  27 + {
  28 + ok then 0,
  29 + unknown(val) then val,
  30 + bad_type then 0x1,
  31 + bad_value then 0x2,
  32 + bad_parameters then 0x3,
  33 + no_init then 0x4,
  34 + unknown_command then 0x5,
  35 + wrong_authentification then 0x6,
  36 + access_denied then 0x7,
  37 + }.
calexium_lib/net_services/CXM_generic_protocol.anubis
1 -/*  
2 - *  
3 - * User: David RENE  
4 - * Date: 25/04/2007  
5 - * Time: 16:20  
6 - * (c) Calexium  
7 - *  
8 - */  
9 -  
10 -read system/muscle.anubis  
11 -read system/data_io.anubis  
12 -read system/string.anubis  
13 -read tools/basis.anubis  
14 -read system/message_queue.anubis  
15 -read calexium_lib/CXM_message_constants.anubis  
16 -  
17 -public define Int32 _CXM_ERROR = 0.  
18 -public define Int32 _CXM_OK = 1.  
19 -public define Int32 _CXM_UNKNOW_CMD = 2.  
20 -  
21 -public type ProtocolResult:  
22 - failure,  
23 - timeout,  
24 - unknow_cmd,  
25 - error,  
26 - ok,  
27 - ok_msg(Message).  
28 -  
29 -public define One  
30 - send_ACK_error  
31 - (  
32 - MessageQueue queue,  
33 - Int32 cmd_id  
34 - )=  
35 - with err_msg = message(_CXM_ACK),  
36 - forget(add_int32(err_msg, "CMD", cmd_id));  
37 - forget(add_int32(err_msg, "STATUS", _CXM_ERROR));  
38 - forget(queue.add_Message_to_send(err_msg)).  
39 -  
40 -public define One  
41 - send_ACK_ok  
42 - (  
43 - MessageQueue queue,  
44 - Int32 cmd_id  
45 - )=  
46 - with ok_msg = message(_CXM_ACK),  
47 - forget(add_int32(ok_msg, "CMD", cmd_id));  
48 - forget(add_int32(ok_msg, "STATUS", _CXM_OK));  
49 - forget(queue.add_Message_to_send(ok_msg))  
50 - .  
51 -  
52 -public define One  
53 - send_ACK_ok  
54 - (  
55 - MessageQueue queue,  
56 - Int32 cmd_id,  
57 - Message result  
58 - )=  
59 - with ok_msg = message(_CXM_ACK),  
60 - forget(add_int32(ok_msg, "CMD", cmd_id));  
61 - forget(add_int32(ok_msg, "STATUS", _CXM_OK));  
62 - forget(add_message(ok_msg, "RESULT", result));  
63 - forget(queue.add_Message_to_send(ok_msg))  
64 - .  
65 -  
66 -public define One  
67 - send_result  
68 - (  
69 - MessageQueue queue,  
70 - Int32 cmd_id,  
71 - Maybe(Message) mb_msg  
72 - )=  
73 - if mb_msg is  
74 - {  
75 - failure then send_ACK_error(queue, cmd_id),  
76 - success(msg) then send_ACK_ok(queue, cmd_id, msg)  
77 - }.  
78 -  
79 -public define One  
80 - send_result  
81 - (  
82 - MessageQueue queue,  
83 - Int32 cmd_id,  
84 - Bool result  
85 - )=  
86 - if result then  
87 - send_ACK_ok(queue, cmd_id)  
88 - else  
89 - send_ACK_error(queue, cmd_id).  
90 -  
91 -public define ProtocolResult  
92 - wait_for_reply  
93 - (  
94 - MessageQueue mQ,  
95 - Int32 wait_cmd,  
96 - Int32 t_out  
97 - ) =  
98 - if mQ.get_next_received_Message(t_out) is  
99 - {  
100 - timeout then timeout,  
101 - closed then failure, //println("wait_for_reply closed");  
102 -  
103 - msg(_msg) then  
104 - if *_msg.what = _CXM_ACK then  
105 - if find_int32(_msg, "CMD") is  
106 - {  
107 - failure then failure, //println("wait_for_reply CMD");  
108 - success(cmd) then  
109 -// println("wait_for_reply CMD="+to_hexa(cmd));  
110 - if find_int32(_msg, "STATUS") is  
111 - {  
112 - failure then failure, //println("wait_for_reply STATUS");  
113 - success(status) then  
114 - if cmd = wait_cmd & status = _CXM_OK then  
115 - if find_message(_msg, "RESULT") is  
116 - {  
117 - failure then ok,  
118 - success(ok_message) then ok_msg(ok_message)  
119 - }  
120 - else if cmd = wait_cmd & status = _CXM_ERROR then  
121 - error  
122 - else if cmd = wait_cmd & status = _CXM_UNKNOW_CMD then  
123 - unknow_cmd  
124 - else  
125 - failure //println("wait_for_reply ");  
126 - }  
127 - }  
128 - else  
129 - failure //println("wait_for_reply not ACK");  
130 - }.  
131 - 1 +/*
  2 + *
  3 + * User: David RENE
  4 + * Date: 25/04/2007
  5 + * Time: 16:20
  6 + * (c) Calexium
  7 + *
  8 + */
  9 +
  10 +read system/muscle.anubis
  11 +read system/data_io.anubis
  12 +read system/string.anubis
  13 +read tools/basis.anubis
  14 +read system/message_queue.anubis
  15 +read calexium_lib/CXM_message_constants.anubis
  16 +
  17 +public define Int32 _CXM_OK = 0.
  18 +public define Int32 _CXM_ERROR = 1.
  19 +public define Int32 _CXM_UNKNOW_CMD = 2.
  20 +
  21 +public type ProtocolResult:
  22 + failure,
  23 + timeout,
  24 + unknow_cmd,
  25 + error,
  26 + ok,
  27 + ok_msg(Message).
  28 +
  29 +public define One
  30 + send_ACK_error
  31 + (
  32 + MessageQueue queue,
  33 + Int32 cmd_id
  34 + )=
  35 + with err_msg = message(_CXM_ACK),
  36 + forget(add_int32(err_msg, "CMD", cmd_id));
  37 + forget(add_int32(err_msg, "STATUS", _CXM_ERROR));
  38 + forget(queue.add_Message_to_send(err_msg)).
  39 +
  40 +public define One
  41 + send_ACK_ok
  42 + (
  43 + MessageQueue queue,
  44 + Int32 cmd_id
  45 + )=
  46 + with ok_msg = message(_CXM_ACK),
  47 + forget(add_int32(ok_msg, "CMD", cmd_id));
  48 + forget(add_int32(ok_msg, "STATUS", _CXM_OK));
  49 + forget(queue.add_Message_to_send(ok_msg))
  50 + .
  51 +
  52 +public define One
  53 + send_ACK_ok
  54 + (
  55 + MessageQueue queue,
  56 + Int32 cmd_id,
  57 + Message result
  58 + )=
  59 + with ok_msg = message(_CXM_ACK),
  60 + forget(add_int32(ok_msg, "CMD", cmd_id));
  61 + forget(add_int32(ok_msg, "STATUS", _CXM_OK));
  62 + forget(add_message(ok_msg, "RESULT", result));
  63 + forget(queue.add_Message_to_send(ok_msg))
  64 + .
  65 +
  66 +public define One
  67 + send_result
  68 + (
  69 + MessageQueue queue,
  70 + Int32 cmd_id,
  71 + Maybe(Message) mb_msg
  72 + )=
  73 + if mb_msg is
  74 + {
  75 + failure then send_ACK_error(queue, cmd_id),
  76 + success(msg) then send_ACK_ok(queue, cmd_id, msg)
  77 + }.
  78 +
  79 +public define One
  80 + send_result
  81 + (
  82 + MessageQueue queue,
  83 + Int32 cmd_id,
  84 + Bool result
  85 + )=
  86 + if result then
  87 + send_ACK_ok(queue, cmd_id)
  88 + else
  89 + send_ACK_error(queue, cmd_id).
  90 +
  91 +public define ProtocolResult
  92 + wait_for_reply
  93 + (
  94 + MessageQueue mQ,
  95 + Int32 wait_cmd,
  96 + Int32 t_out
  97 + ) =
  98 + if mQ.get_next_received_Message(t_out) is
  99 + {
  100 + timeout then timeout,
  101 + closed then failure, //println("wait_for_reply closed");
  102 +
  103 + msg(_msg) then
  104 + if *_msg.what = _CXM_ACK then
  105 + if find_int32(_msg, "CMD") is
  106 + {
  107 + failure then failure, //println("wait_for_reply CMD");
  108 + success(cmd) then
  109 +// println("wait_for_reply CMD="+to_hexa(cmd));
  110 + if find_int32(_msg, "STATUS") is
  111 + {
  112 + failure then failure, //println("wait_for_reply STATUS");
  113 + success(status) then
  114 + if cmd = wait_cmd & status = _CXM_OK then
  115 + if find_message(_msg, "RESULT") is
  116 + {
  117 + failure then ok,
  118 + success(ok_message) then ok_msg(ok_message)
  119 + }
  120 + else if cmd = wait_cmd & status = _CXM_ERROR then
  121 + error
  122 + else if cmd = wait_cmd & status = _CXM_UNKNOW_CMD then
  123 + unknow_cmd
  124 + else
  125 + failure //println("wait_for_reply ");
  126 + }
  127 + }
  128 + else
  129 + failure //println("wait_for_reply not ACK");
  130 + }.
  131 +
calexium_lib/web/CXM_mime.anubis
1 -  
2 - *Project* The Anubis Project  
3 -  
4 - *Title* MIME Types definition.  
5 -  
6 - *Copyright* Copyright (c) Alain Prouté 2005.  
7 -  
8 -  
9 - *Author* Alain Prouté  
10 - 1 +
  2 + *Project* The Anubis Project
  3 +
  4 + *Title* MIME Types definition.
  5 +
  6 + *Copyright* Copyright (c) Alain Prouté 2005.
  7 +
11 8
12 - 9 + *Authors* Alain Prouté
  10 + David René
13 11
  12 +
  13 +read tools/base64.anubis
  14 +read tools/basis.anubis
  15 +read system/string.anubis
14 16
15 public type MIME: 17 public type MIME:
16 mime(String name, 18 mime(String name,
@@ -60,6 +62,11 @@ public define List(MIME) @@ -60,6 +62,11 @@ public define List(MIME)
60 mime("video/x-msvideo", ".avi"), 62 mime("video/x-msvideo", ".avi"),
61 ]. 63 ].
62 64
63 -  
64 -  
65 -  
66 \ No newline at end of file 65 \ No newline at end of file
  66 +public define String
  67 + to_MIME_text
  68 + (
  69 + String charset,
  70 + String text
  71 + )=
  72 + with text = "=?"+charset+"?B?"+to_string(base64_encode(to_byte_array(text)))+"?=",
  73 + find_and_replace(text, implode([13,10]), implode([13,10,32])).