char *test_search_prefix() { void *res = TSTree_search_prefix(node, bdata(&test1), blength(&test1)); debug("result %p expected %p", res, valueA); mu_assert(res == valueA, "Got wrong value4 by prefix."); res = TSTree_search_prefix(node, bdata(&test1), 1); debug("result %p expected %p", res, value4); mu_assert(res == value4, "Got wrong valueA by prefix."); res = TSTree_search_prefix(node, "TE", strlen("TE")); mu_assert(res != NULL, "Should find for short prefix."); res = TSTree_search_prefix(node, "TE--", strlen("TE--")); mu_assert(res != NULL, "Should find for partial prefix."); return NULL; }
bstring match_url(TSTree * routes, bstring url) { bstring route = TSTree_search(routes, bdata(url), blength(url)); if (route == NULL) { printf("No exact match found, trying prefix.\n"); route = TSTree_search_prefix(routes, bdata(url), blength(url)); } return route; }
bstring match_url(TSTree *routes , bstring url) { /*just use TSTree_search and search_prefix to search urls */ bstring route = TSTree_search(routes , bdata(url) , blength(url)); if(route == NULL ){ printf("no exact match found , trying prefix .\n"); route = TSTree_search_prefix(routes , bdata(url) , blength(url)); } return route; }