コード例 #1
0
ファイル: node.c プロジェクト: OpenDZ/libbus1
int b1_handle_new(B1Peer *peer, uint64_t id, B1Handle **handlep) {
        _c_cleanup_(b1_handle_unrefp) B1Handle *handle = NULL;

        assert(peer);
        assert(handlep);

        handle = calloc(1, sizeof(*handle));
        if (!handle)
                return -ENOMEM;

        handle->n_ref = 1;
        handle->holder = b1_peer_ref(peer);
        handle->id = id;
        handle->marked = false;
        c_rbnode_init(&handle->rb);

        *handlep = handle;
        handle = NULL;
        return 0;
}
コード例 #2
0
ファイル: node.c プロジェクト: eworm-de/libbus1
static int b1_handle_new(B1Peer *peer, B1Handle **handlep) {
        _c_cleanup_(b1_handle_unrefp) B1Handle *handle = NULL;

        assert(peer);
        assert(handlep);

        handle = calloc(1, sizeof(*handle));
        if (!handle)
                return -ENOMEM;

        handle->ref = (CRef)C_REF_INIT;
        handle->holder = b1_peer_ref(peer);
        handle->id = BUS1_HANDLE_INVALID;
        handle->marked = false;
        handle->live = false;
        c_rbnode_init(&handle->rb);

        *handlep = handle;
        handle = NULL;
        return 0;
}
コード例 #3
0
ファイル: node.c プロジェクト: eworm-de/libbus1
/**
 * b1_node_new() - create a new node for a peer
 * @peer:               the owning peer
 * @nodep:              pointer to the new node object
 *
 * Return: 0 on success, and a negative error code on failure.
 */
_c_public_ int b1_node_new(B1Peer *peer, B1Node **nodep) {
        _c_cleanup_(b1_node_freep) B1Node *node = NULL;
        int r;

        node = calloc(1, sizeof(*node));
        if (!node)
                return -ENOMEM;

        node->id = BUS1_HANDLE_INVALID;
        node->owner = b1_peer_ref(peer);
        c_rbnode_init(&node->rb_nodes);

        r = b1_handle_new(peer, &node->handle);
        if (r < 0)
                return r;

        node->handle->node = node;

        *nodep = node;
        node = NULL;
        return 0;
}
コード例 #4
0
ファイル: node.c プロジェクト: OpenDZ/libbus1
int b1_node_new_internal(B1Peer *peer, B1Node **nodep, void *userdata, uint64_t id, const char *name) {
        _c_cleanup_(b1_node_freep) B1Node *node = NULL;
        size_t n_name;

        assert(peer);
        assert(nodep);

        n_name = name ? strlen(name) + 1 : 0;
        node = calloc(1, sizeof(*node) + n_name);
        if (!node)
                return -ENOMEM;
        if (name)
                node->name = memcpy((void*)(node + 1), name, n_name);

        node->id = id;
        node->owner = b1_peer_ref(peer);
        node->userdata = userdata;
        node->live = false;

        *nodep = node;
        node = NULL;
        return 0;
}