~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to lib/tevent/tevent_wakeup.c

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
   Unix SMB/CIFS implementation.
 
3
   Infrastructure for async requests
 
4
   Copyright (C) Volker Lendecke 2008
 
5
   Copyright (C) Stefan Metzmacher 2009
 
6
 
 
7
     ** NOTE! The following LGPL license applies to the tevent
 
8
     ** library. This does NOT imply that all of Samba is released
 
9
     ** under the LGPL
 
10
 
 
11
   This library is free software; you can redistribute it and/or
 
12
   modify it under the terms of the GNU Lesser General Public
 
13
   License as published by the Free Software Foundation; either
 
14
   version 3 of the License, or (at your option) any later version.
 
15
 
 
16
   This library is distributed in the hope that it will be useful,
 
17
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
18
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
19
   Lesser General Public License for more details.
 
20
 
 
21
   You should have received a copy of the GNU Lesser General Public
 
22
   License along with this library; if not, see <http://www.gnu.org/licenses/>.
 
23
*/
 
24
 
 
25
#include "replace.h"
 
26
#include "tevent.h"
 
27
#include "tevent_internal.h"
 
28
#include "tevent_util.h"
 
29
 
 
30
struct tevent_wakeup_state {
 
31
        struct timeval wakeup_time;
 
32
};
 
33
 
 
34
struct tevent_req *tevent_wakeup_send(TALLOC_CTX *mem_ctx,
 
35
                                      struct tevent_context *ev,
 
36
                                      struct timeval wakeup_time)
 
37
{
 
38
        struct tevent_req *req;
 
39
        struct tevent_wakeup_state *state;
 
40
 
 
41
        req = tevent_req_create(mem_ctx, &state,
 
42
                                struct tevent_wakeup_state);
 
43
        if (!req) {
 
44
                return NULL;
 
45
        }
 
46
        state->wakeup_time = wakeup_time;
 
47
 
 
48
        if (!tevent_req_set_endtime(req, ev, wakeup_time)) {
 
49
                goto post;
 
50
        }
 
51
 
 
52
        return req;
 
53
post:
 
54
        return tevent_req_post(req, ev);
 
55
}
 
56
 
 
57
bool tevent_wakeup_recv(struct tevent_req *req)
 
58
{
 
59
        enum tevent_req_state state;
 
60
        uint64_t error;
 
61
 
 
62
        if (tevent_req_is_error(req, &state, &error)) {
 
63
                if (state == TEVENT_REQ_TIMED_OUT) {
 
64
                        return true;
 
65
                }
 
66
        }
 
67
 
 
68
        return false;
 
69
}
 
70