?? upnptools.c
字號:
//va_start(ArgList, Arg); ArgName = Arg; while( Idx++ != NumArg ) { ArgValue = va_arg( ArgList, char * ); if( ArgName != NULL ) { node = ixmlNode_getFirstChild( ( IXML_Node * ) ActionDoc ); Ele = ixmlDocument_createElement( ActionDoc, ArgName ); if( ArgValue ) { Txt = ixmlDocument_createTextNode( ActionDoc, ArgValue ); ixmlNode_appendChild( ( IXML_Node * ) Ele, Txt ); } ixmlNode_appendChild( node, ( IXML_Node * ) Ele ); } ArgName = va_arg( ArgList, char * ); } //va_end(ArgList); } return ActionDoc;}/************************************************************************* Function : UpnpMakeAction * * Parameters: * IN char * ActionName: Name of the action request or response* IN char * ServType: Service type* IN int NumArg :Number of arguments in the action request or response* IN char * Arg : pointer to the first argument* IN ... : variable argument list* IN va_list ArgList: Argument list** Description: * This function creates the action request from the argument* list. Its a wrapper function that calls makeAction function to create* the action request.** Returns: IXML_Document ** returns action request document if successful * else returns NULL***************************************************************************/IXML_Document *UpnpMakeAction( char *ActionName, char *ServType, int NumArg, char *Arg, ... ){ va_list ArgList; IXML_Document *out = NULL; if( NumArg > 0 ) { va_start( ArgList, Arg ); } out = makeAction( 0, ActionName, ServType, NumArg, Arg, ArgList ); if( NumArg > 0 ) { va_end( ArgList ); } return out;}/************************************************************************* Function : UpnpMakeActionResponse * * Parameters: * IN char * ActionName: Name of the action request or response* IN char * ServType: Service type* IN int NumArg :Number of arguments in the action request or response* IN char * Arg : pointer to the first argument* IN ... : variable argument list* IN va_list ArgList: Argument list** Description: * This function creates the action response from the argument* list. Its a wrapper function that calls makeAction function to create* the action response.** Returns: IXML_Document ** returns action response document if successful * else returns NULL***************************************************************************/IXML_Document *UpnpMakeActionResponse( char *ActionName, char *ServType, int NumArg, char *Arg, ... ){ va_list ArgList; IXML_Document *out = NULL; if( NumArg > 0 ) { va_start( ArgList, Arg ); } out = makeAction( 1, ActionName, ServType, NumArg, Arg, ArgList ); if( NumArg > 0 ) { va_end( ArgList ); } return out;}/************************************************************************* Function : UpnpAddToActionResponse * * Parameters:* INOUT IXML_Document **ActionResponse: action response document * IN char * ActionName: Name of the action request or response* IN char * ServType: Service type* IN int ArgName :Name of argument to be added in the action response* IN char * ArgValue : value of the argument** Description: * This function adds the argument in the action response. Its a wrapper * function that calls addToAction function to add the argument in the * action response.** Returns: int* returns UPNP_E_SUCCESS if successful * else returns appropriate error***************************************************************************/intUpnpAddToActionResponse( INOUT IXML_Document ** ActionResponse, IN char *ActionName, IN char *ServType, IN char *ArgName, IN char *ArgValue ){ return addToAction( 1, ActionResponse, ActionName, ServType, ArgName, ArgValue );}/************************************************************************* Function : UpnpAddToAction * * Parameters:* INOUT IXML_Document **ActionDoc: action request document * IN char * ActionName: Name of the action request or response* IN char * ServType: Service type* IN int ArgName :Name of argument to be added in the action response* IN char * ArgValue : value of the argument** Description: * This function adds the argument in the action request. Its a wrapper * function that calls addToAction function to add the argument in the * action request.** Returns: int* returns UPNP_E_SUCCESS if successful * else returns appropriate error***************************************************************************/intUpnpAddToAction( IXML_Document ** ActionDoc, char *ActionName, char *ServType, char *ArgName, char *ArgValue ){ return addToAction( 0, ActionDoc, ActionName, ServType, ArgName, ArgValue );}/************************************************************************* Function : UpnpAddToPropertySet * * Parameters: * INOUT IXML_Document **PropSet: propertyset document* IN char *ArgName: Name of the argument* IN char *ArgValue: value of the argument** Description: * This function adds the argument in the propertyset node ** Returns: int* returns UPNP_E_SUCCESS if successful else returns appropriate error***************************************************************************/intUpnpAddToPropertySet( INOUT IXML_Document ** PropSet, IN char *ArgName, IN char *ArgValue ){ char BlankDoc[] = "<e:propertyset xmlns:e=\"urn:schemas" "-upnp-org:event-1-0\"></e:propertyset>"; IXML_Node *node; IXML_Element *Ele; IXML_Element *Ele1; IXML_Node *Txt; int rc; if( ArgName == NULL ) { return UPNP_E_INVALID_PARAM; } if( *PropSet == NULL ) { rc = ixmlParseBufferEx( BlankDoc, PropSet ); if( rc != IXML_SUCCESS ) { return UPNP_E_OUTOF_MEMORY; } } node = ixmlNode_getFirstChild( ( IXML_Node * ) * PropSet ); Ele1 = ixmlDocument_createElement( *PropSet, "e:property" ); Ele = ixmlDocument_createElement( *PropSet, ArgName ); if( ArgValue ) { Txt = ixmlDocument_createTextNode( *PropSet, ArgValue ); ixmlNode_appendChild( ( IXML_Node * ) Ele, Txt ); } ixmlNode_appendChild( ( IXML_Node * ) Ele1, ( IXML_Node * ) Ele ); ixmlNode_appendChild( node, ( IXML_Node * ) Ele1 ); return UPNP_E_SUCCESS;}/************************************************************************* Function : UpnpCreatePropertySet * * Parameters: * IN int NumArg: Number of argument that will go in the propertyset node* IN char * Args: argument strings** Description: * This function creates a propertyset node and put all the input * parameters in the node as elements** Returns: IXML_Document ** returns the document containing propertyset node.***************************************************************************/IXML_Document *UpnpCreatePropertySet( IN int NumArg, IN char *Arg, ... ){ va_list ArgList; int Idx = 0; char BlankDoc[] = "<e:propertyset xmlns:e=\"urn:schemas-" "upnp-org:event-1-0\"></e:propertyset>"; char *ArgName, *ArgValue; IXML_Node *node; IXML_Element *Ele; IXML_Element *Ele1; IXML_Node *Txt; IXML_Document *PropSet; if( ixmlParseBufferEx( BlankDoc, &PropSet ) != IXML_SUCCESS ) { return NULL; } if( NumArg < 1 ) { return NULL; } va_start( ArgList, Arg ); ArgName = Arg; while( Idx++ != NumArg ) { ArgValue = va_arg( ArgList, char * ); if( ArgName != NULL /*&& ArgValue != NULL */ ) { node = ixmlNode_getFirstChild( ( IXML_Node * ) PropSet ); Ele1 = ixmlDocument_createElement( PropSet, "e:property" ); Ele = ixmlDocument_createElement( PropSet, ArgName ); if( ArgValue ) { Txt = ixmlDocument_createTextNode( PropSet, ArgValue ); ixmlNode_appendChild( ( IXML_Node * ) Ele, Txt ); } ixmlNode_appendChild( ( IXML_Node * ) Ele1, ( IXML_Node * ) Ele ); ixmlNode_appendChild( node, ( IXML_Node * ) Ele1 ); } ArgName = va_arg( ArgList, char * ); } va_end( ArgList ); return PropSet;}#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -