… | |
… | |
55 | REQ_STAT, REQ_LSTAT, REQ_FSTAT, |
55 | REQ_STAT, REQ_LSTAT, REQ_FSTAT, |
56 | REQ_FSYNC, REQ_FDATASYNC, |
56 | REQ_FSYNC, REQ_FDATASYNC, |
57 | REQ_UNLINK, REQ_RMDIR, REQ_RENAME, |
57 | REQ_UNLINK, REQ_RMDIR, REQ_RENAME, |
58 | REQ_READDIR, |
58 | REQ_READDIR, |
59 | REQ_LINK, REQ_SYMLINK, |
59 | REQ_LINK, REQ_SYMLINK, |
|
|
60 | REQ_GROUP, REQ_NOP, |
60 | REQ_SLEEP, |
61 | REQ_SLEEP, |
61 | REQ_GROUP, |
|
|
62 | }; |
62 | }; |
63 | |
63 | |
64 | #define AIO_REQ_KLASS "IO::AIO::REQ" |
64 | #define AIO_REQ_KLASS "IO::AIO::REQ" |
65 | #define AIO_GRP_KLASS "IO::AIO::GRP" |
65 | #define AIO_GRP_KLASS "IO::AIO::GRP" |
66 | |
66 | |
… | |
… | |
259 | for (i = 0; i <= AvFILL (av); ++i) |
259 | for (i = 0; i <= AvFILL (av); ++i) |
260 | PUSHs (*av_fetch (av, i, 0)); |
260 | PUSHs (*av_fetch (av, i, 0)); |
261 | } |
261 | } |
262 | break; |
262 | break; |
263 | |
263 | |
|
|
264 | case REQ_NOP: |
264 | case REQ_SLEEP: |
265 | case REQ_SLEEP: |
265 | break; |
266 | break; |
266 | |
267 | |
267 | default: |
268 | default: |
268 | PUSHs (sv_2mortal (newSViv (req->result))); |
269 | PUSHs (sv_2mortal (newSViv (req->result))); |
… | |
… | |
820 | tv.tv_usec = req->fd2; |
821 | tv.tv_usec = req->fd2; |
821 | |
822 | |
822 | req->result = select (0, 0, 0, 0, &tv); |
823 | req->result = select (0, 0, 0, 0, &tv); |
823 | } |
824 | } |
824 | |
825 | |
|
|
826 | case REQ_GROUP: /*TODO: should not be handled here */ |
|
|
827 | case REQ_NOP: /*TODO: should not be handled here */ |
825 | case REQ_QUIT: |
828 | case REQ_QUIT: |
826 | break; |
829 | break; |
827 | |
830 | |
828 | default: |
831 | default: |
829 | req->result = ENOSYS; |
832 | req->result = ENOSYS; |
… | |
… | |
1212 | req_send (req); |
1215 | req_send (req); |
1213 | XPUSHs (req_sv (req, AIO_GRP_KLASS)); |
1216 | XPUSHs (req_sv (req, AIO_GRP_KLASS)); |
1214 | } |
1217 | } |
1215 | |
1218 | |
1216 | void |
1219 | void |
|
|
1220 | aio_nop (callback=&PL_sv_undef) |
|
|
1221 | SV * callback |
|
|
1222 | PPCODE: |
|
|
1223 | { |
|
|
1224 | dREQ; |
|
|
1225 | |
|
|
1226 | req->type = REQ_NOP; |
|
|
1227 | |
|
|
1228 | REQ_SEND; |
|
|
1229 | } |
|
|
1230 | |
|
|
1231 | void |
1217 | flush () |
1232 | flush () |
1218 | PROTOTYPE: |
1233 | PROTOTYPE: |
1219 | CODE: |
1234 | CODE: |
1220 | while (nreqs) |
1235 | while (nreqs) |
1221 | { |
1236 | { |