/*
 * This file Copyright (C) 2015-2016 Mnemosyne LLC
 *
 * It may be used under the GNU GPL versions 2 or 3
 * or any future license endorsed by Mnemosyne LLC.
 *
 */

#pragma once

#ifdef __cplusplus
extern "C"
{
#endif

struct event_base;

typedef struct tr_watchdir* tr_watchdir_t;

typedef enum
{
    TR_WATCHDIR_ACCEPT,
    TR_WATCHDIR_IGNORE,
    TR_WATCHDIR_RETRY
}
tr_watchdir_status;

typedef tr_watchdir_status (* tr_watchdir_cb)(tr_watchdir_t handle, char const* name, void* user_data);

/* ... */

tr_watchdir_t tr_watchdir_new(char const* path, tr_watchdir_cb callback, void* callback_user_data,
    struct event_base* event_base, bool force_generic);

void tr_watchdir_free(tr_watchdir_t handle);

char const* tr_watchdir_get_path(tr_watchdir_t handle);

#ifdef __cplusplus
}
#endif
