#ifndef LLARP_PATHFINDER_H_ #define LLARP_PATHFINDER_H_ #include #include /** * path_base.h * * path api functions */ /// forard declare struct llarp_router; struct llarp_dht_context; // fwd declr struct llarp_pathbuilder_context; /// alloc struct llarp_pathbuilder_context* llarp_pathbuilder_context_new(struct llarp_router* router, struct llarp_dht_context* dht, size_t numpaths, size_t defaultNumHops); /// dealloc void llarp_pathbuilder_context_free(struct llarp_pathbuilder_context* ctx); // fwd declr struct llarp_pathbuild_job; /// response callback typedef void (*llarp_pathbuilder_hook)(struct llarp_pathbuild_job*); // select hop function (user, nodedb, prevhop, result, hopnnumber) called in // logic thread typedef void (*llarp_pathbuilder_select_hop_func)(void*, struct llarp_nodedb*, struct llarp_rc*, struct llarp_rc*, size_t); // request struct struct llarp_pathbuild_job { // opaque pointer for user data void* user; // router context (set by llarp_pathbuilder_build_path) struct llarp_router* router; // context struct llarp_pathbuilder_context* context; // path hop selection llarp_pathbuilder_select_hop_func selectHop; // called when the path build started llarp_pathbuilder_hook pathBuildStarted; // path struct llarp_path_hops hops; }; /// request func // or find_path but thought pathfinder_find_path was a bit redundant void llarp_pathbuilder_build_path(struct llarp_pathbuild_job* job); #endif