本文整理汇总了C++中DSNode::on_subscribe方法的典型用法代码示例。如果您正苦于以下问题:C++ DSNode::on_subscribe方法的具体用法?C++ DSNode::on_subscribe怎么用?C++ DSNode::on_subscribe使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DSNode
的用法示例。
在下文中一共展示了DSNode::on_subscribe方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: dslink_response_sub
int dslink_response_sub(DSLink *link, json_t *paths, json_t *rid) {
if (dslink_response_send_closed(link, rid) != 0) {
return DSLINK_ALLOC_ERR;
}
DSNode *root = link->responder->super_root;
size_t index;
json_t *value;
json_array_foreach(paths, index, value) {
const char *path = json_string_value(json_object_get(value, "path"));
DSNode *node = dslink_node_get_path(root, path);
if (!node) {
continue;
}
uint32_t *sid = malloc(sizeof(uint32_t));
if (!sid) {
return DSLINK_ALLOC_ERR;
}
*sid = (uint32_t) json_integer_value(json_object_get(value, "sid"));
void *tmp = sid;
if (dslink_map_set(link->responder->value_path_subs,
(void *) node->path, &tmp) != 0) {
free(sid);
return 1;
}
if (tmp) {
void *p = tmp;
dslink_map_remove(link->responder->value_sid_subs, &p);
free(tmp);
}
tmp = (void *) node->path;
if (dslink_map_set(link->responder->value_sid_subs,
sid, &tmp) != 0) {
tmp = (void *) node->path;
dslink_map_remove(link->responder->value_path_subs, &tmp);
free(sid);
return 1;
}
dslink_response_send_val(link, node, *sid);
if (node->on_subscribe) {
node->on_subscribe(link, node);
}
}
return 0;
}