return g_hash_table_size (session->events);
}
+
+void
+rspamd_session_watcher_push (struct rspamd_async_session *s)
+{
+ g_assert (s != NULL);
+
+ if (s->cur_watcher) {
+ s->cur_watcher->remain ++;
+ }
+}
+
+void
+rspamd_session_watcher_pop (struct rspamd_async_session *s,
+ struct rspamd_async_watcher *w)
+{
+ g_assert (s != NULL);
+
+ if (w) {
+ if (--w->remain == 0) {
+ w->cb (s->user_data, w->ud);
+ }
+ }
+}
+
+struct rspamd_async_watcher*
+rspamd_session_get_watcher (struct rspamd_async_session *s)
+{
+ g_assert (s != NULL);
+
+ return s->cur_watcher;
+}
struct rspamd_async_event;
struct rspamd_async_session;
+struct rspamd_async_watcher;
typedef void (*event_finalizer_t)(gpointer ud);
typedef void (*event_watcher_t)(gpointer session_data, gpointer ud);
*/
guint rspamd_session_watch_stop (struct rspamd_async_session *s);
+/**
+ * Create a fake event just for event watcher
+ * @param s
+ */
+void rspamd_session_watcher_push (struct rspamd_async_session *s);
+
+/**
+ * Remove a fake event from a watcher
+ * @param s
+ */
+void rspamd_session_watcher_pop (struct rspamd_async_session *s,
+ struct rspamd_async_watcher *w);
+
+/**
+ * Returns the current watcher for events session
+ * @param s
+ * @return
+ */
+struct rspamd_async_watcher* rspamd_session_get_watcher (
+ struct rspamd_async_session *s);
+
#endif /* RSPAMD_EVENTS_H */