summaryrefslogtreecommitdiff
path: root/lib/tevent
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2009-06-04 17:26:23 +0200
committerKarolin Seeger <kseeger@samba.org>2009-09-09 12:45:02 +0200
commit6b802602c99d7534d0c1178b199ac119b268971a (patch)
tree8d7005fd0c0429754e568067223d1030e05d2202 /lib/tevent
parent6a6f07ceac1e0e4c00be9869713e7200755aae64 (diff)
downloadsamba-6b802602c99d7534d0c1178b199ac119b268971a.tar.gz
Add tevent_req_notify_callback
This is necessary for requests that have multiple results. Examples would be SMBEcho and ldap_search. (cherry picked from commit c6f39b46a7b0505331612a1bee15a82f97009f0d) (cherry picked from commit 8d988b165d373d074b8be321bcc9c20a8e85a6fc)
Diffstat (limited to 'lib/tevent')
-rw-r--r--lib/tevent/tevent.h4
-rw-r--r--lib/tevent/tevent_req.c13
2 files changed, 13 insertions, 4 deletions
diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h
index 6c5df6321a5..2cbd175e73f 100644
--- a/lib/tevent/tevent.h
+++ b/lib/tevent/tevent.h
@@ -252,6 +252,10 @@ bool tevent_req_set_endtime(struct tevent_req *req,
struct tevent_context *ev,
struct timeval endtime);
+void _tevent_req_notify_callback(struct tevent_req *req, const char *location);
+#define tevent_req_notify_callback(req) \
+ _tevent_req_notify_callback(req, __location__)
+
void _tevent_req_done(struct tevent_req *req,
const char *location);
#define tevent_req_done(req) \
diff --git a/lib/tevent/tevent_req.c b/lib/tevent/tevent_req.c
index 01700006eb9..541f93f99c3 100644
--- a/lib/tevent/tevent_req.c
+++ b/lib/tevent/tevent_req.c
@@ -117,17 +117,22 @@ struct tevent_req *_tevent_req_create(TALLOC_CTX *mem_ctx,
return req;
}
-static void tevent_req_finish(struct tevent_req *req,
- enum tevent_req_state state,
- const char *location)
+void _tevent_req_notify_callback(struct tevent_req *req, const char *location)
{
- req->internal.state = state;
req->internal.finish_location = location;
if (req->async.fn != NULL) {
req->async.fn(req);
}
}
+static void tevent_req_finish(struct tevent_req *req,
+ enum tevent_req_state state,
+ const char *location)
+{
+ req->internal.state = state;
+ _tevent_req_notify_callback(req, location);
+}
+
/**
* @brief An async request has successfully finished
* @param[in] req The finished request