@@ -15,15 +15,19 @@ fn test_mq_send_and_receive() {
15
15
let attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
16
16
let mq_name= & CString :: new ( b"/a_nix_test_queue" . as_ref ( ) ) . unwrap ( ) ;
17
17
18
- let mqd0 = mq_open ( mq_name, MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY ,
19
- Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH ,
20
- Some ( & attr) ) . unwrap ( ) ;
18
+ let oflag0 = MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY ;
19
+ let mode = Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH ;
20
+ let r0 = mq_open ( mq_name, oflag0, mode, Some ( & attr) ) ;
21
+ if let Err ( Sys ( ENOSYS ) ) = r0 {
22
+ println ! ( "message queues not supported or module not loaded?" ) ;
23
+ return ;
24
+ } ;
25
+ let mqd0 = r0. unwrap ( ) ;
21
26
let msg_to_send = "msg_1" ;
22
27
mq_send ( mqd0, msg_to_send. as_bytes ( ) , 1 ) . unwrap ( ) ;
23
28
24
- let mqd1 = mq_open ( mq_name, MQ_OFlag :: O_CREAT | MQ_OFlag :: O_RDONLY ,
25
- Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH ,
26
- Some ( & attr) ) . unwrap ( ) ;
29
+ let oflag1 = MQ_OFlag :: O_CREAT | MQ_OFlag :: O_RDONLY ;
30
+ let mqd1 = mq_open ( mq_name, oflag1, mode, Some ( & attr) ) . unwrap ( ) ;
27
31
let mut buf = [ 0u8 ; 32 ] ;
28
32
let mut prio = 0u32 ;
29
33
let len = mq_receive ( mqd1, & mut buf, & mut prio) . unwrap ( ) ;
@@ -40,7 +44,15 @@ fn test_mq_getattr() {
40
44
const MSG_SIZE : c_long = 32 ;
41
45
let initial_attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
42
46
let mq_name = & CString :: new ( b"/attr_test_get_attr" . as_ref ( ) ) . unwrap ( ) ;
43
- let mqd = mq_open ( mq_name, MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY , Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH , Some ( & initial_attr) ) . unwrap ( ) ;
47
+ let oflag = MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY ;
48
+ let mode = Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH ;
49
+ let r = mq_open ( mq_name, oflag, mode, Some ( & initial_attr) ) ;
50
+ if let Err ( Sys ( ENOSYS ) ) = r {
51
+ println ! ( "message queues not supported or module not loaded?" ) ;
52
+ return ;
53
+ } ;
54
+ let mqd = r. unwrap ( ) ;
55
+
44
56
let read_attr = mq_getattr ( mqd) ;
45
57
assert ! ( read_attr. unwrap( ) == initial_attr) ;
46
58
mq_close ( mqd) . unwrap ( ) ;
@@ -53,7 +65,14 @@ fn test_mq_setattr() {
53
65
const MSG_SIZE : c_long = 32 ;
54
66
let initial_attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
55
67
let mq_name = & CString :: new ( b"/attr_test_get_attr" . as_ref ( ) ) . unwrap ( ) ;
56
- let mqd = mq_open ( mq_name, MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY , Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH , Some ( & initial_attr) ) . unwrap ( ) ;
68
+ let oflag = MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY ;
69
+ let mode = Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH ;
70
+ let r = mq_open ( mq_name, oflag, mode, Some ( & initial_attr) ) ;
71
+ if let Err ( Sys ( ENOSYS ) ) = r {
72
+ println ! ( "message queues not supported or module not loaded?" ) ;
73
+ return ;
74
+ } ;
75
+ let mqd = r. unwrap ( ) ;
57
76
58
77
let new_attr = MqAttr :: new ( 0 , 20 , MSG_SIZE * 2 , 100 ) ;
59
78
let old_attr = mq_setattr ( mqd, & new_attr) ;
@@ -81,7 +100,14 @@ fn test_mq_set_nonblocking() {
81
100
const MSG_SIZE : c_long = 32 ;
82
101
let initial_attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
83
102
let mq_name = & CString :: new ( b"/attr_test_get_attr" . as_ref ( ) ) . unwrap ( ) ;
84
- let mqd = mq_open ( mq_name, MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY , Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH , Some ( & initial_attr) ) . unwrap ( ) ;
103
+ let oflag = MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY ;
104
+ let mode = Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH ;
105
+ let r = mq_open ( mq_name, oflag, mode, Some ( & initial_attr) ) ;
106
+ if let Err ( Sys ( ENOSYS ) ) = r {
107
+ println ! ( "message queues not supported or module not loaded?" ) ;
108
+ return ;
109
+ } ;
110
+ let mqd = r. unwrap ( ) ;
85
111
mq_set_nonblock ( mqd) . unwrap ( ) ;
86
112
let new_attr = mq_getattr ( mqd) ;
87
113
assert ! ( new_attr. unwrap( ) . flags( ) == MQ_OFlag :: O_NONBLOCK . bits( ) as c_long) ;
@@ -97,7 +123,14 @@ fn test_mq_unlink() {
97
123
let initial_attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
98
124
let mq_name_opened = & CString :: new ( b"/mq_unlink_test" . as_ref ( ) ) . unwrap ( ) ;
99
125
let mq_name_not_opened = & CString :: new ( b"/mq_unlink_test" . as_ref ( ) ) . unwrap ( ) ;
100
- let mqd = mq_open ( mq_name_opened, MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY , Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH , Some ( & initial_attr) ) . unwrap ( ) ;
126
+ let oflag = MQ_OFlag :: O_CREAT | MQ_OFlag :: O_WRONLY ;
127
+ let mode = Mode :: S_IWUSR | Mode :: S_IRUSR | Mode :: S_IRGRP | Mode :: S_IROTH ;
128
+ let r = mq_open ( mq_name_opened, oflag, mode, Some ( & initial_attr) ) ;
129
+ if let Err ( Sys ( ENOSYS ) ) = r {
130
+ println ! ( "message queues not supported or module not loaded?" ) ;
131
+ return ;
132
+ } ;
133
+ let mqd = r. unwrap ( ) ;
101
134
102
135
let res_unlink = mq_unlink ( mq_name_opened) ;
103
136
assert ! ( res_unlink == Ok ( ( ) ) ) ;
@@ -108,5 +141,4 @@ fn test_mq_unlink() {
108
141
mq_close ( mqd) . unwrap ( ) ;
109
142
let res_unlink_after_close = mq_unlink ( mq_name_opened) ;
110
143
assert ! ( res_unlink_after_close == Err ( Sys ( ENOENT ) ) ) ;
111
-
112
144
}
0 commit comments