@@ -54,7 +54,7 @@ namespace nmos
5454 return false ;
5555 }
5656
57- web::json::value modify_device_model_object (nmos::resources& resources, const nmos::resource& resource, const web::json::array& target_role_path, const web::json::value& target_object_properties_holder, nmos::nc_restore_mode::restore_mode restore_mode, bool validate, nmos::get_control_protocol_class_descriptor_handler get_control_protocol_class_descriptor, nmos::get_control_protocol_datatype_descriptor_handler get_control_protocol_datatype_descriptor, nmos::get_read_only_modification_allow_list_handler get_read_only_modification_allow_list)
57+ web::json::value modify_device_model_object (nmos::resources& resources, const nmos::resource& resource, const web::json::array& target_role_path, const web::json::value& target_object_properties_holder, nmos::nc_restore_mode::restore_mode restore_mode, bool validate, nmos::get_control_protocol_class_descriptor_handler get_control_protocol_class_descriptor, nmos::get_control_protocol_datatype_descriptor_handler get_control_protocol_datatype_descriptor, nmos::get_read_only_modification_allow_list_handler get_read_only_modification_allow_list, nmos::control_protocol_property_changed_handler property_changed )
5858 {
5959 const auto & class_id = nc::details::parse_class_id (nmos::fields::nc::class_id (resource.data ));
6060
@@ -171,6 +171,12 @@ namespace nmos
171171 {
172172 resource_.data [nmos::fields::nc::name (property_descriptor)] = value;
173173
174+ // notify application code that the specified property has changed
175+ if (property_changed)
176+ {
177+ property_changed (resource, nmos::fields::nc::name (property_descriptor), -1 );
178+ }
179+
174180 }, nc::make_property_changed_event (nmos::fields::nc::oid (resource.data ), {{property_id, nmos::nc_property_change_type::type::value_changed, value}}));
175181 }
176182 }
@@ -194,7 +200,7 @@ namespace nmos
194200 return nmos::make_object_properties_set_validation (target_role_path, object_status, property_restore_notices.as_array (), U (" OK" ));
195201 }
196202
197- web::json::value modify_rebuildable_block (nmos::resources& resources, object_properties_map& object_properties_holder_map, const nmos::resource& resource, const web::json::array& target_role_path, const web::json::value& block_object_properties_holder, bool validate, nmos::get_control_protocol_class_descriptor_handler get_control_protocol_class_descriptor, nmos::remove_device_model_object_handler remove_device_model_object, nmos::create_device_model_object_handler create_device_model_object)
203+ web::json::value modify_rebuildable_block (nmos::resources& resources, object_properties_map& object_properties_holder_map, const nmos::resource& resource, const web::json::array& target_role_path, const web::json::value& block_object_properties_holder, bool validate, nmos::get_control_protocol_class_descriptor_handler get_control_protocol_class_descriptor, nmos::remove_device_model_object_handler remove_device_model_object, nmos::create_device_model_object_handler create_device_model_object, nmos::control_protocol_property_changed_handler property_changed )
198204 {
199205 auto object_properties_set_validations = web::json::value::array ();
200206
@@ -544,6 +550,12 @@ namespace nmos
544550 {
545551 resource.data [nmos::fields::nc::members] = modified_members;
546552
553+ // notify application code that the specified property has changed
554+ if (property_changed)
555+ {
556+ property_changed (resource, nmos::fields::nc::members, -1 );
557+ }
558+
547559 }, nc::make_property_changed_event (nmos::fields::nc::oid (resource.data ), { { nmos::nc_block_members_property_id, nmos::nc_property_change_type::type::value_changed, modified_members } }));
548560 }
549561
@@ -681,7 +693,7 @@ namespace nmos
681693 return web::json::value_from_elements (target_object_properties_holders).as_array ();
682694 }
683695
684- web::json::value apply_backup_data_set (nmos::resources& resources, const nmos::resource& resource, const web::json::array& object_properties_holders, bool recurse, nmos::nc_restore_mode::restore_mode restore_mode, bool validate, nmos::get_control_protocol_class_descriptor_handler get_control_protocol_class_descriptor, nmos::get_control_protocol_datatype_descriptor_handler get_control_protocol_datatype_descriptor, nmos::get_read_only_modification_allow_list_handler get_read_only_modification_allow_list, nmos::remove_device_model_object_handler remove_device_model_object, nmos::create_device_model_object_handler create_device_model_object)
696+ web::json::value apply_backup_data_set (nmos::resources& resources, const nmos::resource& resource, const web::json::array& object_properties_holders, bool recurse, nmos::nc_restore_mode::restore_mode restore_mode, bool validate, nmos::get_control_protocol_class_descriptor_handler get_control_protocol_class_descriptor, nmos::get_control_protocol_datatype_descriptor_handler get_control_protocol_datatype_descriptor, nmos::get_read_only_modification_allow_list_handler get_read_only_modification_allow_list, nmos::remove_device_model_object_handler remove_device_model_object, nmos::create_device_model_object_handler create_device_model_object, nmos::control_protocol_property_changed_handler property_changed )
685697 {
686698 auto object_properties_set_validation_values = web::json::value::array ();
687699
@@ -753,7 +765,7 @@ namespace nmos
753765 {
754766 // Process this block to add / remove device model objects as members of this block
755767 // the object properties holder for any added objects will be erased from the object_properties_holder_map to avoid double processing
756- const auto child_object_properties_set_validations = details::modify_rebuildable_block (resources, object_properties_holder_map, *r, role_path, object_properties_holder, validate, get_control_protocol_class_descriptor, remove_device_model_object, create_device_model_object);
768+ const auto child_object_properties_set_validations = details::modify_rebuildable_block (resources, object_properties_holder_map, *r, role_path, object_properties_holder, validate, get_control_protocol_class_descriptor, remove_device_model_object, create_device_model_object, property_changed );
757769 for (const auto & validation_values : child_object_properties_set_validations.as_array ())
758770 {
759771 web::json::push_back (object_properties_set_validation_values, validation_values);
@@ -769,7 +781,7 @@ namespace nmos
769781 }
770782 else
771783 {
772- const auto object_properties_set_validation = details::modify_device_model_object (resources, *r, role_path, object_properties_holder, restore_mode, validate, get_control_protocol_class_descriptor, get_control_protocol_datatype_descriptor, get_read_only_modification_allow_list);
784+ const auto object_properties_set_validation = details::modify_device_model_object (resources, *r, role_path, object_properties_holder, restore_mode, validate, get_control_protocol_class_descriptor, get_control_protocol_datatype_descriptor, get_read_only_modification_allow_list, property_changed );
773785 web::json::push_back (object_properties_set_validation_values, object_properties_set_validation);
774786 }
775787
0 commit comments