コード例 #1
0
// Given an object, object instance or resource node, add a create tag. In the case only an object node is given,
// an object instance node without an ID will be created, marking that the new instance should have a generated ID.
InternalError ClientSetOperation_AddCreate(TreeNode node)
{
    InternalError result = InternalError_Unspecified;

    if ((node != NULL) && (ObjectsTree_IsObjectNode(node) || ObjectsTree_IsObjectInstanceNode(node) || ObjectsTree_IsResourceNode(node)))
    {
        if (ObjectsTree_IsObjectNode(node))
        {
            node = ObjectsTreeInternal_AddChildNode(node, "ObjectInstance");
        }

        if (TreeNode_AddChild(node, Xml_CreateNode(IPC_MESSAGE_TAG_CREATE)))
        {
            result = InternalError_Success;
        }
        else
        {
            LogError("Failed to add create tag to object instance node");
            result = InternalError_Tree;
        }
    }
    else
    {
        LogError("node is NULL");
        result = InternalError_ParameterInvalid;
    }

    return result;
}
コード例 #2
0
ファイル: xmltree.c プロジェクト: camilorodegheri/AwaLWM2M
TreeNode Tree_Copy(TreeNode node)
{
    _treeNode _node = (_treeNode) node;
    _treeNode _newNode = NULL;

    if (_node)
    {
        _newNode = TreeNode_CopyTreeNode(node);

        if(_node->ChildCount)
        {
            uint32_t childIndex;
            for (childIndex = 0; childIndex < _node->ChildCount; childIndex++)
            {
                if (_node->Children && _node->Children[childIndex])
                {
                    _treeNode _newChildNode = Tree_Copy(_node->Children[childIndex]);

                    if (_newChildNode)
                    {
                        TreeNode_AddChild(_newNode, _newChildNode);
                    }
                }
            }
        }
    }

    return _newNode;
}
コード例 #3
0
static TreeNode AddIDRange(TreeNode resourceNode, AwaArrayIndex startIndex, AwaArrayIndex endIndexExclusive)
{
    TreeNode rangeNode = NULL;
    if (resourceNode != NULL)
    {
        // add an <IDRange> node to the supplied valuesNode
        rangeNode = Xml_CreateNode("IDRange");
        TreeNode rangeStartNode = Xml_CreateNodeWithValue("Start", "%d", startIndex);
        TreeNode rangeEndNode = Xml_CreateNodeWithValue("EndExclusive", "%d", endIndexExclusive);

        TreeNode_AddChild(rangeNode, rangeStartNode);
        TreeNode_AddChild(rangeNode, rangeEndNode);
        TreeNode_AddChild(resourceNode, rangeNode);
    }
    else
    {
        LogErrorWithEnum(AwaError_Internal, "resourceNode is NULL");
    }
    return rangeNode;
}
コード例 #4
0
InternalError ClientSubscribe_AddAwaSubscribeType(TreeNode leafNode, AwaClientSubscription * subscription)
{
    InternalError result = InternalError_Unspecified;
    const char * messageType = NULL;
    switch(subscription->Type)
    {
        case AwaSubscribeType_Change:
            messageType = subscription->Cancel? IPC_MESSAGE_TAG_CANCEL_SUBSCRIBE_TO_CHANGE : IPC_MESSAGE_TAG_SUBSCRIBE_TO_CHANGE;
            break;
        case AwaSubscribeType_Execute:
            messageType = subscription->Cancel? IPC_MESSAGE_TAG_CANCEL_SUBSCRIBE_TO_EXECUTE : IPC_MESSAGE_TAG_SUBSCRIBE_TO_EXECUTE;
            break;
        default:
            result = LogErrorWithEnum(InternalError_Unspecified, "node is NULL");
            goto error;
    }

    if (leafNode != NULL)
    {
        TreeNode subscribeTypeNode = Xml_CreateNode(messageType);
        if (TreeNode_AddChild(leafNode, subscribeTypeNode))
        {
            result = InternalError_Success;
        }
        else
        {
            result = LogErrorWithEnum(InternalError_Tree, "Failed to add AwaSubscribeType tag to leaf node");
        }
    }
    else
    {
        result = LogErrorWithEnum(InternalError_ParameterInvalid, "node is NULL");
    }
error:
    return result;
}
コード例 #5
0
ファイル: xmltree.c プロジェクト: camilorodegheri/AwaLWM2M
void HTTP_xmlDOMBuilder_StartElementHandler(void *userData, const char *nodeName, const char **atts)
{
    TreeNode newNode = TreeNode_Create();
    if (newNode)
    {
        if (nodeName)
        {
            uint32_t namelength = strlen(nodeName);

            if (!TreeNode_SetName(newNode, nodeName, namelength))
            {
                TreeNode_DeleteSingle(newNode);
            }
        }
        // Check if this is the root node
        if (currentTreeNode == NULL)
            *(TreeNode*)userData = newNode;

        // Connect the new node up to its parent
        TreeNode_AddChild(currentTreeNode, newNode);

        currentTreeNode = newNode;
    }
}