@@ -37,6 +37,58 @@ impl FsRequest {
37
37
fs_req
38
38
}
39
39
40
+ fn open_common < P : PathLike > ( loop_ : Loop , path : & P , flags : int , mode : int ,
41
+ cb : Option < FsCallback > ) -> int {
42
+ let complete_cb_ptr = match cb {
43
+ Some ( _) => compl_cb as * u8 ,
44
+ None => 0 as * u8
45
+ } ;
46
+ let is_sync = cb. is_none ( ) ;
47
+ let req = FsRequest :: new ( cb) ;
48
+ let result = path. path_as_str ( |p| {
49
+ p. to_c_str ( ) . with_ref ( |p| unsafe {
50
+ uvll:: fs_open ( loop_. native_handle ( ) ,
51
+ req. native_handle ( ) , p, flags, mode, complete_cb_ptr) as int
52
+ } )
53
+ } ) ;
54
+ if is_sync { req. cleanup_and_delete ( ) ; }
55
+ result
56
+ }
57
+ pub fn open < P : PathLike > ( loop_ : Loop , path : & P , flags : int , mode : int ,
58
+ cb : FsCallback ) {
59
+ FsRequest :: open_common ( loop_, path, flags, mode, Some ( cb) ) ;
60
+ }
61
+
62
+ pub fn open_sync < P : PathLike > ( loop_ : Loop , path : & P , flags : int , mode : int ) -> Result < int , UvError > {
63
+ let result = FsRequest :: open_common ( loop_, path, flags, mode, None ) ;
64
+ sync_cleanup ( & loop_, result)
65
+ }
66
+
67
+ fn unlink_common < P : PathLike > ( loop_ : Loop , path : & P , cb : Option < FsCallback > ) -> int {
68
+ let complete_cb_ptr = match cb {
69
+ Some ( _) => compl_cb as * u8 ,
70
+ None => 0 as * u8
71
+ } ;
72
+ let is_sync = cb. is_none ( ) ;
73
+ let req = FsRequest :: new ( cb) ;
74
+ let result = path. path_as_str ( |p| {
75
+ p. to_c_str ( ) . with_ref ( |p| unsafe {
76
+ uvll:: fs_unlink ( loop_. native_handle ( ) ,
77
+ req. native_handle ( ) , p, complete_cb_ptr) as int
78
+ } )
79
+ } ) ;
80
+ if is_sync { req. cleanup_and_delete ( ) ; }
81
+ result
82
+ }
83
+ pub fn unlink < P : PathLike > ( loop_ : Loop , path : & P , cb : FsCallback ) {
84
+ let result = FsRequest :: unlink_common ( loop_, path, Some ( cb) ) ;
85
+ sync_cleanup ( & loop_, result) ;
86
+ }
87
+ pub fn unlink_sync < P : PathLike > ( loop_ : Loop , path : & P ) -> Result < int , UvError > {
88
+ let result = FsRequest :: unlink_common ( loop_, path, None ) ;
89
+ sync_cleanup ( & loop_, result)
90
+ }
91
+
40
92
pub fn install_req_data ( & self , cb : Option < FsCallback > ) {
41
93
let fs_req = ( self . native_handle ( ) ) as * uvll:: uv_write_t ;
42
94
let data = ~RequestData {
@@ -105,63 +157,11 @@ impl FileDescriptor {
105
157
FileDescriptor :: new ( req. get_result ( ) )
106
158
}
107
159
108
- fn open_common < P : PathLike > ( loop_ : Loop , path : & P , flags : int , mode : int ,
109
- cb : Option < FsCallback > ) -> int {
110
- let complete_cb_ptr = match cb {
111
- Some ( _) => compl_cb,
112
- None => 0 as * u8
113
- } ;
114
- let is_sync = cb. is_none ( ) ;
115
- let req = FsRequest :: new ( cb) ;
116
- let result = path. path_as_str ( |p| {
117
- p. to_c_str ( ) . with_ref ( |p| unsafe {
118
- uvll:: fs_open ( loop_. native_handle ( ) ,
119
- req. native_handle ( ) , p, flags, mode, complete_cb_ptr) as int
120
- } )
121
- } ) ;
122
- if is_sync { req. cleanup_and_delete ( ) ; }
123
- result
124
- }
125
- pub fn open < P : PathLike > ( loop_ : Loop , path : & P , flags : int , mode : int ,
126
- cb : FsCallback ) {
127
- FileDescriptor :: open_common ( loop_, path, flags, mode, Some ( cb) ) ;
128
- }
129
-
130
- pub fn open_sync < P : PathLike > ( loop_ : Loop , path : & P , flags : int , mode : int ) -> Result < int , UvError > {
131
- let result = FileDescriptor :: open_common ( loop_, path, flags, mode, None ) ;
132
- sync_cleanup ( & loop_, result)
133
- }
134
-
135
- fn unlink_common < P : PathLike > ( loop_ : Loop , path : & P , cb : Option < FsCallback > ) -> int {
136
- let complete_cb_ptr = match cb {
137
- Some ( _) => compl_cb,
138
- None => 0 as * u8
139
- } ;
140
- let is_sync = cb. is_none ( ) ;
141
- let req = FsRequest :: new ( cb) ;
142
- let result = path. path_as_str ( |p| {
143
- p. to_c_str ( ) . with_ref ( |p| unsafe {
144
- uvll:: fs_unlink ( loop_. native_handle ( ) ,
145
- req. native_handle ( ) , p, complete_cb_ptr) as int
146
- } )
147
- } ) ;
148
- if is_sync { req. cleanup_and_delete ( ) ; }
149
- result
150
- }
151
- pub fn unlink < P : PathLike > ( loop_ : Loop , path : & P , cb : FsCallback ) {
152
- let result = FileDescriptor :: unlink_common ( loop_, path, Some ( cb) ) ;
153
- sync_cleanup ( & loop_, result) ;
154
- }
155
- pub fn unlink_sync < P : PathLike > ( loop_ : Loop , path : & P ) -> Result < int , UvError > {
156
- let result = FileDescriptor :: unlink_common ( loop_, path, None ) ;
157
- sync_cleanup ( & loop_, result)
158
- }
159
-
160
160
// as per bnoordhuis in #libuv: offset >= 0 uses prwrite instead of write
161
161
fn write_common ( & mut self , loop_ : Loop , buf : Buf , offset : i64 , cb : Option < FsCallback > )
162
162
-> int {
163
163
let complete_cb_ptr = match cb {
164
- Some ( _) => compl_cb,
164
+ Some ( _) => compl_cb as * u8 ,
165
165
None => 0 as * u8
166
166
} ;
167
167
let is_sync = cb. is_none ( ) ;
@@ -190,7 +190,7 @@ impl FileDescriptor {
190
190
offset : i64 , cb : Option < FsCallback > )
191
191
-> int {
192
192
let complete_cb_ptr = match cb {
193
- Some ( _) => compl_cb,
193
+ Some ( _) => compl_cb as * u8 ,
194
194
None => 0 as * u8
195
195
} ;
196
196
let is_sync = cb. is_none ( ) ;
@@ -216,7 +216,7 @@ impl FileDescriptor {
216
216
217
217
fn close_common ( self , loop_ : Loop , cb : Option < FsCallback > ) -> int {
218
218
let complete_cb_ptr = match cb {
219
- Some ( _) => compl_cb,
219
+ Some ( _) => compl_cb as * u8 ,
220
220
None => 0 as * u8
221
221
} ;
222
222
let is_sync = cb. is_none ( ) ;
@@ -301,7 +301,7 @@ mod test {
301
301
let read_buf = slice_to_uv_buf ( read_mem) ;
302
302
let read_buf_ptr: * Buf = & read_buf;
303
303
let p = Path ( path_str) ;
304
- do FileDescriptor :: open ( loop_, & p, create_flags as int , mode as int )
304
+ do FsRequest :: open ( loop_, & p, create_flags as int , mode as int )
305
305
|req, uverr| {
306
306
let loop_ = req. get_loop ( ) ;
307
307
assert ! ( uverr. is_none( ) ) ;
@@ -313,7 +313,7 @@ mod test {
313
313
do fd. close ( loop_) |req, _| {
314
314
let loop_ = req. get_loop ( ) ;
315
315
assert ! ( uverr. is_none( ) ) ;
316
- do FileDescriptor :: open ( loop_, & Path ( path_str) , read_flags as int , 0 )
316
+ do FsRequest :: open ( loop_, & Path ( path_str) , read_flags as int , 0 )
317
317
|req, uverr| {
318
318
assert ! ( uverr. is_none( ) ) ;
319
319
let loop_ = req. get_loop ( ) ;
@@ -336,7 +336,7 @@ mod test {
336
336
assert ! ( read_str == ~"hello");
337
337
do FileDescriptor(raw_fd).close(loop_) |_,uverr| {
338
338
assert!(uverr.is_none());
339
- do FileDescriptor ::unlink(loop_, &Path(path_str))
339
+ do FsRequest ::unlink(loop_, &Path(path_str))
340
340
|_,uverr| {
341
341
assert!(uverr.is_none());
342
342
};
@@ -367,7 +367,7 @@ mod test {
367
367
let write_val = " hello".as_bytes().to_owned();
368
368
let write_buf = slice_to_uv_buf(write_val);
369
369
// open/create
370
- let result = FileDescriptor ::open_sync(loop_, &Path(path_str),
370
+ let result = FsRequest ::open_sync(loop_, &Path(path_str),
371
371
create_flags as int, mode as int);
372
372
assert!(result.is_ok());
373
373
let mut fd = FileDescriptor(result.unwrap() as i32);
@@ -378,7 +378,7 @@ mod test {
378
378
let result = fd.close_sync(loop_);
379
379
assert!(result.is_ok());
380
380
// re-open
381
- let result = FileDescriptor ::open_sync(loop_, &Path(path_str),
381
+ let result = FsRequest ::open_sync(loop_, &Path(path_str),
382
382
read_flags as int,0);
383
383
assert!(result.is_ok());
384
384
let len = 1028;
@@ -399,7 +399,7 @@ mod test {
399
399
let result = fd.close_sync(loop_);
400
400
assert!(result.is_ok());
401
401
// unlink
402
- let result = FileDescriptor ::unlink_sync(loop_, &Path(path_str));
402
+ let result = FsRequest ::unlink_sync(loop_, &Path(path_str));
403
403
assert!(result.is_ok());
404
404
} else { fail!(" nread was 0 .. wudn' t expectin' that. "); }
405
405
loop_.close();
0 commit comments