Beispiel #1
0
int init_sys_static(BrokerNode *sysNode) {
    BrokerNode *buildNode = broker_node_create("build_number", "node");
    BrokerNode *startTimeNode = broker_node_create("startTime", "node");
    BrokerNode *versionNode = broker_node_create("version", "node");

    if (!buildNode) {
        return 1;
    }

    if (broker_node_add(sysNode, buildNode) != 0) {
        broker_node_free(buildNode);
        return 1;
    }

    if (json_object_set_new_nocheck(buildNode->meta, "$type",
                            json_string_nocheck("string")) != 0) {
        return 1;
    }

    if (json_object_set_new_nocheck(buildNode->meta, "$name",
                            json_string_nocheck("Server Build")) != 0) {
        return 1;
    }

    if (broker_node_add(sysNode, versionNode) != 0) {
        broker_node_free(versionNode);
        return 1;
    }

    if (json_object_set_new_nocheck(versionNode->meta, "$type",
                            json_string_nocheck("string")) != 0) {
        return 1;
    }

    if (json_object_set_new_nocheck(versionNode->meta, "$name",
                            json_string_nocheck("DSA Version")) != 0) {
        return 1;
    }

    if (broker_node_add(sysNode, startTimeNode) != 0) {
        broker_node_free(startTimeNode);
        return 1;
    }

    if (json_object_set_new_nocheck(startTimeNode->meta, "$type",
                            json_string_nocheck("string")) != 0) {
        return 1;
    }

    if (json_object_set_new_nocheck(startTimeNode->meta, "$name",
                            json_string_nocheck("Start Time")) != 0) {
        return 1;
    }

    buildNode->value = json_string_nocheck(BROKER_SERVER_BUILD);
    versionNode->value = json_string_nocheck(BROKER_DSA_VERSION);

    {
        char ts[32];
        dslink_create_ts(ts, 32);
        startTimeNode->value = json_string_nocheck(ts);
    }

    return 0;
}
Beispiel #2
0
static
int broker_init(Broker *broker, json_t *defaultPermission) {
    broker->root = broker_node_create("", "node");
    if (!broker->root) {
        goto fail;
    }
    broker->root->permissionList = permission_list_load(defaultPermission);

    broker->root->path = dslink_strdup("/");
    json_object_set_new(broker->root->meta, "$downstream",
                        json_string_nocheck("/downstream"));

    broker->sys = broker_node_create("sys", "static");
    if (!(broker->sys && broker_node_add(broker->root, broker->sys) == 0)) {
        broker_node_free(broker->sys);
        goto fail;
    }

    broker->upstream = broker_node_create("upstream", "static");
    if (!(broker->upstream && broker_node_add(broker->root, broker->upstream) == 0)) {
        broker_node_free(broker->upstream);
        goto fail;
    }

    broker->data = broker_node_create("data", "node");
    if (!(broker->data && broker_node_add(broker->root, broker->data) == 0
          && broker_load_data_nodes(broker) == 0
          && broker_data_node_populate(broker->data) == 0)) {
        broker_node_free(broker->data);
        goto fail;
    }

    broker->downstream = broker_node_create("downstream", "node");
    if (!(broker->downstream
          && broker_node_add(broker->root, broker->downstream) == 0)) {
        broker_node_free(broker->downstream);
        goto fail;
    }
    broker_load_downstream_nodes(broker);
    broker_load_qos_storage(broker);

    if (broker_sys_node_populate(broker->sys)) {
        goto fail;
    }




    BrokerNode *node = broker_node_create("defs", "static");
    if (!(node && json_object_set_new_nocheck(node->meta,
                                              "$hidden",
                                              json_true()) == 0
          && broker_node_add(broker->root, node) == 0)) {
        broker_node_free(node);
        goto fail;
    }

    if (dslink_map_init(&broker->client_connecting, dslink_map_str_cmp,
                        dslink_map_str_key_len_cal, dslink_map_hash_key) != 0) {
        goto fail;
    }

    if (dslink_map_init(&broker->remote_pending_sub, dslink_map_str_cmp,
                        dslink_map_str_key_len_cal, dslink_map_hash_key) != 0) {
        goto fail;
    }

    if (dslink_map_init(&broker->local_pending_sub, dslink_map_str_cmp,
                        dslink_map_str_key_len_cal, dslink_map_hash_key) != 0) {
        goto fail;
    }

    return 0;
fail:
    broker_free(broker);
    return 1;
}