// Called to initialize your node structure. void init(DSLink *link) { json_t *messageValue = dslink_json_get_config(link, "message"); if (messageValue) { log_info("Message = %s\n", json_string_value(messageValue)); } DSNode *superRoot = link->responder->super_root; DSNode *stringValueNode = dslink_node_create(superRoot, "string", "node"); dslink_node_set_meta(link, stringValueNode, "$type", json_string("string")); dslink_node_set_meta(link, stringValueNode, "$writable", json_string("write")); dslink_node_update_value_new(link, stringValueNode, json_string("Hello World!")); dslink_node_add_child(link, stringValueNode); responder_init_replicator(link, superRoot); responder_init_rng(link, superRoot); responder_init_invoke(link, superRoot); responder_init_serialization(link, superRoot); // add link data json_t * linkData = json_object(); json_object_set_nocheck(linkData, "test", json_true()); link->link_data = linkData; log_info("Initialized!\n"); }
static int dslink_init_responder(Responder *responder) { responder->super_root = dslink_node_create(NULL, "/", "node"); if (!responder->super_root) { goto cleanup; } DSLINK_RESPONDER_MAP_INIT(open_streams, uint32) DSLINK_RESPONDER_MAP_INIT(list_subs, str) DSLINK_RESPONDER_MAP_INIT(value_path_subs, str) DSLINK_RESPONDER_MAP_INIT(value_sid_subs, uint32) return 0; cleanup: if (responder->open_streams) { DSLINK_MAP_FREE(responder->open_streams, {}); } if (responder->list_subs) { DSLINK_MAP_FREE(responder->list_subs, {}); } if (responder->value_path_subs) { DSLINK_MAP_FREE(responder->value_path_subs, {}); } if (responder->value_sid_subs) { DSLINK_MAP_FREE(responder->value_sid_subs, {}); } if (responder->super_root) { dslink_node_tree_free(NULL, responder->super_root); } return DSLINK_ALLOC_ERR; }
void responder_init_serialization(DSLink *link, DSNode *root) { DSNode *node = dslink_node_create(root, "saved", "node"); // data for serialization testing dslink_node_set_meta_new(link, node, "$$$password", json_string_nocheck("Test1234")); // load the data after set password to test if the deserialization is correct load_node(link, node); dslink_node_set_meta_new(link, node, "$writable", json_string_nocheck("write")); dslink_node_set_meta_new(link, node, "$type", json_string_nocheck("string")); if (dslink_node_add_child(link, node) != 0) { log_warn("Failed to add the serialization node to the root\n"); dslink_node_tree_free(link, node); } node->on_data_changed = on_node_changed; }