@@ -548,6 +548,11 @@ static int adapter_command(neu_adapter_t *adapter, neu_reqresp_head_t header,
548548 strcpy (pheader -> receiver , cmd -> driver );
549549 break ;
550550 }
551+ case NEU_REQ_RENAME_TAG : {
552+ neu_req_rename_tag_t * cmd = (neu_req_rename_tag_t * ) data ;
553+ strcpy (pheader -> receiver , cmd -> driver );
554+ break ;
555+ }
551556 case NEU_REQ_IMPORT_TAGS : {
552557 neu_req_import_tags_t * cmd = (neu_req_import_tags_t * ) data ;
553558 strcpy (pheader -> receiver , cmd -> node );
@@ -887,6 +892,7 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
887892 case NEU_RESP_ADD_GTAG :
888893 case NEU_RESP_IMPORT_TAGS :
889894 case NEU_RESP_UPDATE_TAG :
895+ case NEU_RESP_RENAME_TAG :
890896 case NEU_RESP_GET_TAG :
891897 case NEU_RESP_GET_NODE :
892898 case NEU_RESP_GET_PLUGIN :
@@ -912,6 +918,7 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
912918 case NEU_REQ_ADD_TAG_EVENT :
913919 case NEU_REQ_DEL_TAG_EVENT :
914920 case NEU_REQ_UPDATE_TAG_EVENT :
921+ case NEU_REQ_RENAME_TAG_EVENT :
915922 case NEU_REQ_ADD_GTAG_EVENT :
916923 case NEU_REQ_ADD_PLUGIN_EVENT :
917924 case NEU_REQ_DEL_PLUGIN_EVENT :
@@ -1772,6 +1779,41 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
17721779 reply (adapter , header , & resp );
17731780 break ;
17741781 }
1782+ case NEU_REQ_RENAME_TAG : {
1783+ neu_req_rename_tag_t * cmd = (neu_req_rename_tag_t * ) & header [1 ];
1784+ neu_resp_rename_tag_t resp = { 0 };
1785+
1786+ if (adapter -> module -> type == NEU_NA_TYPE_DRIVER ) {
1787+ resp .error = neu_adapter_driver_rename_tag (
1788+ (neu_adapter_driver_t * ) adapter , cmd -> group , cmd -> old_name ,
1789+ cmd -> new_name );
1790+ if (resp .error == 0 ) {
1791+ rv = adapter_storage_rename_tag (cmd -> driver , cmd -> group ,
1792+ cmd -> old_name ,
1793+ cmd -> new_name );
1794+ if (rv != 0 ) {
1795+ // rollback in-memory rename on persistence failure
1796+ nlog_error ("persist rename failed, rolling back "
1797+ "tag:%s->%s node:%s grp:%s" ,
1798+ cmd -> old_name , cmd -> new_name , cmd -> driver ,
1799+ cmd -> group );
1800+ neu_adapter_driver_rename_tag (
1801+ (neu_adapter_driver_t * ) adapter , cmd -> group ,
1802+ cmd -> new_name , cmd -> old_name );
1803+ resp .error = NEU_ERR_EINTERNAL ;
1804+ } else if (header -> monitor ) {
1805+ notify_monitor (adapter , NEU_REQ_RENAME_TAG_EVENT , cmd );
1806+ }
1807+ }
1808+ } else {
1809+ resp .error = NEU_ERR_GROUP_NOT_ALLOW ;
1810+ }
1811+
1812+ neu_msg_exchange (header );
1813+ header -> type = NEU_RESP_RENAME_TAG ;
1814+ reply (adapter , header , & resp );
1815+ break ;
1816+ }
17751817 case NEU_REQ_NODE_UNINIT : {
17761818 neu_req_node_uninit_t * cmd = (neu_req_node_uninit_t * ) & header [1 ];
17771819 char name [NEU_NODE_NAME_LEN ] = { 0 };
0 commit comments