// 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; }
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; }
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; }
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; }
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; } }