PengZheng commented on code in PR #470:
URL: https://github.com/apache/celix/pull/470#discussion_r1377595646


##########
bundles/remote_services/discovery_zeroconf/src/discovery_zeroconf_announcer.c:
##########
@@ -342,11 +342,9 @@ static void 
discoveryZeroconfAnnouncer_revokeEndpoints(discovery_zeroconf_announ
 static bool 
discoveryZeroconfAnnouncer_copyPropertiesToTxtRecord(discovery_zeroconf_announcer_t
 *announcer, celix_properties_iterator_t *propIter, TXTRecordRef *txtRecord, 
uint16_t maxTxtLen, bool splitTxtRecord) {
     const char *key;
     const char *val;
-    celix_properties_t *props;
-    while (celix_propertiesIterator_hasNext(propIter)) {
-        key = celix_propertiesIterator_nextKey(propIter);
-        props = celix_propertiesIterator_properties(propIter);
-        val = celix_properties_get(props, key, "");
+    while (!celix_propertiesIterator_isEnd(propIter)) {
+        key = propIter->key;
+        val = propIter->entry.value;

Review Comment:
   Shall we check whether `val == NULL`?



##########
bundles/remote_services/discovery_common/src/endpoint_descriptor_writer.c:
##########
@@ -139,20 +139,15 @@ static celix_status_t 
endpointDescriptorWriter_writeEndpoint(endpoint_descriptor
     } else {
         xmlTextWriterStartElement(writer->writer, ENDPOINT_DESCRIPTION);
 
-        hash_map_iterator_pt iter = 
hashMapIterator_create(endpoint->properties);
-        while (hashMapIterator_hasNext(iter)) {
-            hash_map_entry_pt entry = hashMapIterator_nextEntry(iter);
-
-            void* propertyName = hashMapEntry_getKey(entry);
-                       const xmlChar* propertyValue = (const xmlChar*) 
hashMapEntry_getValue(entry);
-
+        CELIX_PROPERTIES_ITERATE(endpoint->properties, iter) {
+                       const xmlChar* propertyValue = (const xmlChar*) 
celix_properties_get(endpoint->properties, iter.key, "");

Review Comment:
   Why not `iter.entry.value`?  Maybe the value could be `NULL`?
   If value could be `NULL`, we need to check all previous usages of 
`iter.entry.value`.



##########
bundles/pubsub/pubsub_protocol/pubsub_protocol_lib/src/pubsub_wire_protocol_common.c:
##########
@@ -101,19 +101,17 @@ celix_status_t 
pubsubProtocol_encodeMetadata(pubsub_protocol_message_t* message,
             *bufferInOut = newBuffer;
             *bufferLengthInOut = newLength;
         }
-        const char* key;
         if (metadataSize == 0) {
             encoded = true;
             continue;
         }
         celix_status_t status = CELIX_SUCCESS;
-        CELIX_PROPERTIES_FOR_EACH(message->metadata.metadata, key) {
-            const char *val = celix_properties_get(message->metadata.metadata, 
key, "");
+        CELIX_PROPERTIES_ITERATE(message->metadata.metadata, iter) {
             if (status == CELIX_SUCCESS) {
-                status = 
pubsubProtocol_addNetstringEntryToBuffer(*bufferInOut, *bufferLengthInOut, 
&offset, key);
+                status = 
pubsubProtocol_addNetstringEntryToBuffer(*bufferInOut, *bufferLengthInOut, 
&offset, iter.key);

Review Comment:
   Previously, it was guaranteed that `val != NULL`. Now does this invariant 
still hold?



##########
bundles/remote_services/discovery_zeroconf/src/discovery_zeroconf_announcer.c:
##########
@@ -425,6 +424,7 @@ static void 
discoveryZeroconfAnnouncer_announceEndpoints(discovery_zeroconf_anno
                     break;
                 }
                 TXTRecordDeallocate(&txtRecord);
+                celix_propertiesIterator_next(&propIter);

Review Comment:
   `discoveryZeroconfAnnouncer_copyPropertiesToTxtRecord` already calls 
`celix_propertiesIterator_next` once. @xuzhenbao please have a look at RSA.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@celix.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to