1 | /* |
1 | /* |
2 | * libevent compatibility layer |
2 | * libevent compatibility layer |
3 | * |
3 | * |
4 | * Copyright (c) 2007,2008 Marc Alexander Lehmann <libev@schmorp.de> |
4 | * Copyright (c) 2007,2008,2009 Marc Alexander Lehmann <libev@schmorp.de> |
5 | * All rights reserved. |
5 | * All rights reserved. |
6 | * |
6 | * |
7 | * Redistribution and use in source and binary forms, with or without modifica- |
7 | * Redistribution and use in source and binary forms, with or without modifica- |
8 | * tion, are permitted provided that the following conditions are met: |
8 | * tion, are permitted provided that the following conditions are met: |
9 | * |
9 | * |
… | |
… | |
72 | |
72 | |
73 | static ev_tstamp |
73 | static ev_tstamp |
74 | ev_tv_get (struct timeval *tv) |
74 | ev_tv_get (struct timeval *tv) |
75 | { |
75 | { |
76 | if (tv) |
76 | if (tv) |
|
|
77 | { |
77 | return tv->tv_sec + tv->tv_usec * 1e-6; |
78 | ev_tstamp after = tv->tv_sec + tv->tv_usec * 1e-6; |
|
|
79 | return after ? after : 1e-6; |
|
|
80 | } |
78 | else |
81 | else |
79 | return -1.; |
82 | return -1.; |
80 | } |
83 | } |
81 | |
84 | |
82 | #define EVENT_VERSION(a,b) # a "." # b |
85 | #define EVENT_STRINGIFY(s) # s |
|
|
86 | #define EVENT_VERSION(a,b) EVENT_STRINGIFY (a) "." EVENT_STRINGIFY (b) |
83 | |
87 | |
84 | const char *event_get_version (void) |
88 | const char *event_get_version (void) |
85 | { |
89 | { |
|
|
90 | /* returns ABI, not API or library, version */ |
86 | return EVENT_VERSION (EV_VERSION_MAJOR, EV_VERSION_MINOR); |
91 | return EVENT_VERSION (EV_VERSION_MAJOR, EV_VERSION_MINOR); |
87 | } |
92 | } |
88 | |
93 | |
89 | const char *event_get_method (void) |
94 | const char *event_get_method (void) |
90 | { |
95 | { |
… | |
… | |
97 | if (ev_x_cur) |
102 | if (ev_x_cur) |
98 | ev_x_cur = (struct event_base *)ev_loop_new (EVFLAG_AUTO); |
103 | ev_x_cur = (struct event_base *)ev_loop_new (EVFLAG_AUTO); |
99 | else |
104 | else |
100 | ev_x_cur = (struct event_base *)ev_default_loop (EVFLAG_AUTO); |
105 | ev_x_cur = (struct event_base *)ev_default_loop (EVFLAG_AUTO); |
101 | #else |
106 | #else |
102 | assert (("multiple event bases not supported when not compiled with EV_MULTIPLICITY", !ev_x_cur)); |
107 | assert (("libev: multiple event bases not supported when not compiled with EV_MULTIPLICITY", !ev_x_cur)); |
103 | |
108 | |
104 | ev_x_cur = (struct event_base *)(long)ev_default_loop (EVFLAG_AUTO); |
109 | ev_x_cur = (struct event_base *)(long)ev_default_loop (EVFLAG_AUTO); |
105 | #endif |
110 | #endif |
106 | |
111 | |
107 | return ev_x_cur; |
112 | return ev_x_cur; |