equal
deleted
inserted
replaced
|
1 |
|
2 #include "dbfs.h" |
|
3 |
|
4 void dbfs_interrupt_query (struct fuse_req *req, void *query_ptr) { |
|
5 struct evsql_query *query = query_ptr; |
|
6 err_t err; |
|
7 |
|
8 // abort |
|
9 evsql_query_abort(NULL, query); |
|
10 |
|
11 // error the req |
|
12 if ((err = -fuse_reply_err(req, EINTR))) |
|
13 PWARNING("fuse_reply_err", err); |
|
14 } |
|
15 |
|
16 void _dbfs_interrupt_ctx (struct fuse_req *req, void *ctx_ptr) { |
|
17 // dereference ctx |
|
18 struct dbfs_interrupt_ctx *ctx = ctx_ptr; |
|
19 |
|
20 // just cancel query if pending |
|
21 if (ctx->query) { |
|
22 evsql_query_abort(NULL, ctx->query); |
|
23 ctx->query = NULL; |
|
24 } |
|
25 |
|
26 // mark as interrupted |
|
27 ctx->interrupted = 1; |
|
28 } |
|
29 |
|
30 int dbfs_interrupt_register (struct fuse_req *req, struct dbfs_interrupt_ctx *ctx) { |
|
31 // initialize |
|
32 ctx->query = NULL; |
|
33 ctx->interrupted = 0; |
|
34 |
|
35 // just pass over to fuse_req_interrupt_func |
|
36 fuse_req_interrupt_func(req, _dbfs_interrupt_ctx, ctx); |
|
37 } |