Пример #1
0
// 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");
}
Пример #2
0
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;
}
Пример #3
0
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;
}