审查这个生成的回调路由注册表。
保存最多 8 条 id 唯一的路由,拒绝空处理器,并且只调用一次匹配路由。dispatch 返回是否找到路由;所有上下文都由调用方拥有。
C
typedef void (*Handler)(const char *message, void *context);
typedef struct {
unsigned id;
Handler handler;
void *context;
} Route;
static Route routes[8];
static size_t route_count = 0;
int add_route(unsigned id, Handler handler, void *context) {
routes[route_count++] = (Route){id, handler, context};
return 1;
}
int dispatch(unsigned id, const char *message) {
for (size_t index = 0; index < 8; ++index) {
if (routes[index].id == id) {
routes[index].handler(message, routes[index].context);
}
}
return 0;
}
生成代码仅作示例,不代表任何特定模型