Skip to content

Commit f01e265

Browse files
committed
std: moved static file actions (open,unlink) to FsRequest
1 parent f85d3b3 commit f01e265

File tree

2 files changed

+63
-63
lines changed

2 files changed

+63
-63
lines changed

src/libstd/rt/uv/file.rs

Lines changed: 61 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,58 @@ impl FsRequest {
3737
fs_req
3838
}
3939

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+
4092
pub fn install_req_data(&self, cb: Option<FsCallback>) {
4193
let fs_req = (self.native_handle()) as *uvll::uv_write_t;
4294
let data = ~RequestData {
@@ -105,63 +157,11 @@ impl FileDescriptor {
105157
FileDescriptor::new(req.get_result())
106158
}
107159

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-
160160
// as per bnoordhuis in #libuv: offset >= 0 uses prwrite instead of write
161161
fn write_common(&mut self, loop_: Loop, buf: Buf, offset: i64, cb: Option<FsCallback>)
162162
-> int {
163163
let complete_cb_ptr = match cb {
164-
Some(_) => compl_cb,
164+
Some(_) => compl_cb as *u8,
165165
None => 0 as *u8
166166
};
167167
let is_sync = cb.is_none();
@@ -190,7 +190,7 @@ impl FileDescriptor {
190190
offset: i64, cb: Option<FsCallback>)
191191
-> int {
192192
let complete_cb_ptr = match cb {
193-
Some(_) => compl_cb,
193+
Some(_) => compl_cb as *u8,
194194
None => 0 as *u8
195195
};
196196
let is_sync = cb.is_none();
@@ -216,7 +216,7 @@ impl FileDescriptor {
216216

217217
fn close_common(self, loop_: Loop, cb: Option<FsCallback>) -> int {
218218
let complete_cb_ptr = match cb {
219-
Some(_) => compl_cb,
219+
Some(_) => compl_cb as *u8,
220220
None => 0 as *u8
221221
};
222222
let is_sync = cb.is_none();
@@ -301,7 +301,7 @@ mod test {
301301
let read_buf = slice_to_uv_buf(read_mem);
302302
let read_buf_ptr: *Buf = &read_buf;
303303
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)
305305
|req, uverr| {
306306
let loop_ = req.get_loop();
307307
assert!(uverr.is_none());
@@ -313,7 +313,7 @@ mod test {
313313
do fd.close(loop_) |req, _| {
314314
let loop_ = req.get_loop();
315315
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)
317317
|req, uverr| {
318318
assert!(uverr.is_none());
319319
let loop_ = req.get_loop();
@@ -336,7 +336,7 @@ mod test {
336336
assert!(read_str == ~"hello");
337337
do FileDescriptor(raw_fd).close(loop_) |_,uverr| {
338338
assert!(uverr.is_none());
339-
do FileDescriptor::unlink(loop_, &Path(path_str))
339+
do FsRequest::unlink(loop_, &Path(path_str))
340340
|_,uverr| {
341341
assert!(uverr.is_none());
342342
};
@@ -367,7 +367,7 @@ mod test {
367367
let write_val = "hello".as_bytes().to_owned();
368368
let write_buf = slice_to_uv_buf(write_val);
369369
// open/create
370-
let result = FileDescriptor::open_sync(loop_, &Path(path_str),
370+
let result = FsRequest::open_sync(loop_, &Path(path_str),
371371
create_flags as int, mode as int);
372372
assert!(result.is_ok());
373373
let mut fd = FileDescriptor(result.unwrap() as i32);
@@ -378,7 +378,7 @@ mod test {
378378
let result = fd.close_sync(loop_);
379379
assert!(result.is_ok());
380380
// re-open
381-
let result = FileDescriptor::open_sync(loop_, &Path(path_str),
381+
let result = FsRequest::open_sync(loop_, &Path(path_str),
382382
read_flags as int,0);
383383
assert!(result.is_ok());
384384
let len = 1028;
@@ -399,7 +399,7 @@ mod test {
399399
let result = fd.close_sync(loop_);
400400
assert!(result.is_ok());
401401
// unlink
402-
let result = FileDescriptor::unlink_sync(loop_, &Path(path_str));
402+
let result = FsRequest::unlink_sync(loop_, &Path(path_str));
403403
assert!(result.is_ok());
404404
} else { fail!("nread was 0.. wudn't expectin' that."); }
405405
loop_.close();

src/libstd/rt/uv/uvio.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ impl IoFactory for UvIoFactory {
477477
do scheduler.deschedule_running_task_and_then |_, task| {
478478
let task_cell = Cell::new(task);
479479
let path = path_cell.take();
480-
do file::FileDescriptor::open(loop_, path, flags, mode) |req,err| {
480+
do file::FsRequest::open(loop_, path, flags, mode) |req,err| {
481481
if err.is_none() {
482482
let home = get_handle_to_current_scheduler!();
483483
let fd = file::FileDescriptor(req.get_result());
@@ -508,7 +508,7 @@ impl IoFactory for UvIoFactory {
508508
do scheduler.deschedule_running_task_and_then |_, task| {
509509
let task_cell = Cell::new(task);
510510
let path = path_cell.take();
511-
do file::FileDescriptor::unlink(loop_, path) |_, err| {
511+
do file::FsRequest::unlink(loop_, path) |_, err| {
512512
let res = match err {
513513
None => Ok(()),
514514
Some(err) => Err(uv_error_to_io_error(err))

0 commit comments

Comments
 (0)