@@ -2865,54 +2865,67 @@ void Attribute::delete_seq()
28652865 case Tango::DEV_SHORT:
28662866 case Tango::DEV_ENUM:
28672867 delete value.sh_seq ;
2868+ value.sh_seq = Tango_nullptr;
28682869 break ;
28692870
28702871 case Tango::DEV_LONG:
28712872 delete value.lg_seq ;
2873+ value.lg_seq = Tango_nullptr;
28722874 break ;
28732875
28742876 case Tango::DEV_LONG64:
28752877 delete value.lg64_seq ;
2878+ value.lg64_seq = Tango_nullptr;
28762879 break ;
28772880
28782881 case Tango::DEV_DOUBLE:
28792882 delete value.db_seq ;
2883+ value.db_seq = Tango_nullptr;
28802884 break ;
28812885
28822886 case Tango::DEV_STRING:
28832887 delete value.str_seq ;
2888+ value.str_seq = Tango_nullptr;
28842889 break ;
28852890
28862891 case Tango::DEV_FLOAT:
28872892 delete value.fl_seq ;
2893+ value.fl_seq = Tango_nullptr;
28882894 break ;
28892895
28902896 case Tango::DEV_USHORT:
28912897 delete value.ush_seq ;
2898+ value.ush_seq = Tango_nullptr;
28922899 break ;
28932900
28942901 case Tango::DEV_UCHAR:
28952902 delete value.cha_seq ;
2903+ value.cha_seq = Tango_nullptr;
28962904 break ;
28972905
28982906 case Tango::DEV_BOOLEAN:
28992907 delete value.boo_seq ;
2908+ value.boo_seq = Tango_nullptr;
29002909 break ;
29012910
29022911 case Tango::DEV_ULONG:
29032912 delete value.ulg_seq ;
2913+ value.ulg_seq = Tango_nullptr;
29042914 break ;
29052915
29062916 case Tango::DEV_ULONG64:
29072917 delete value.ulg64_seq ;
2918+ value.ulg64_seq = Tango_nullptr;
29082919 break ;
29092920
29102921 case Tango::DEV_STATE:
29112922 delete value.state_seq ;
2923+ value.state_seq = Tango_nullptr;
29122924 break ;
29132925
29142926 case Tango::DEV_ENCODED:
29152927 delete value.enc_seq ;
2928+ value.enc_seq = Tango_nullptr;
29162929 break ;
29172930 }
29182931}
@@ -5362,109 +5375,64 @@ void Attribute::log_quality()
53625375 dev = tg->get_device_by_name (d_name);
53635376 }
53645377
5365- //
5366- // Log something if the new quality is different than the old one
5367- //
5378+ const bool has_quality_changed = quality != old_quality;
5379+ const bool has_alarm_changed = alarm != old_alarm;
5380+ const bool is_alarm_set = alarm. any ();
53685381
5369- if (quality != old_quality )
5382+ if (has_quality_changed )
53705383 {
5371- if (alarm. any () == false )
5384+ if (! is_alarm_set )
53725385 {
5373-
5374- //
5375- // No alarm detected
5376- //
5377-
5378- switch (quality)
5386+ switch (quality)
53795387 {
5380- case ATTR_INVALID:
5381- if (dev->get_logger ()->is_error_enabled ())
5382- dev->get_logger ()->error_stream () << log4tango::LogInitiator::_begin_log << " INVALID quality for attribute " << name << endl;
5388+ case ATTR_INVALID:
5389+ DEV_ERROR_STREAM (dev) << " INVALID quality for attribute " << name << std::endl;
53835390 break ;
53845391
5385- case ATTR_CHANGING:
5386- if (dev->get_logger ()->is_info_enabled ())
5387- dev->get_logger ()->info_stream () << log4tango::LogInitiator::_begin_log << " CHANGING quality for attribute " << name << endl;
5392+ case ATTR_CHANGING:
5393+ DEV_INFO_STREAM (dev) << " CHANGING quality for attribute " << name << std::endl;
53885394 break ;
53895395
5390- case ATTR_VALID:
5391- if (dev->get_logger ()->is_info_enabled ())
5392- dev->get_logger ()->info_stream () << log4tango::LogInitiator::_begin_log << " VALID quality for attribute " << name << endl;
5396+ case ATTR_VALID:
5397+ DEV_INFO_STREAM (dev) << " INFO quality for attribute " << name << std::endl;
53935398 break ;
53945399
5395- default :
5400+ default :
53965401 break ;
53975402 }
53985403 }
53995404 else
54005405 {
5401-
5402- //
5403- // Different log according to which alarm is set
5404- //
5405-
5406- if (alarm[min_level] == true )
5407- {
5408- if (dev->get_logger ()->is_error_enabled ())
5409- dev->get_logger ()->error_stream () << log4tango::LogInitiator::_begin_log << " MIN ALARM for attribute " << name << endl;
5410- }
5411- else if (alarm[max_level] == true )
5412- {
5413- if (dev->get_logger ()->is_error_enabled ())
5414- dev->get_logger ()->error_stream () << log4tango::LogInitiator::_begin_log << " MAX ALARM for attribute " << name << endl;
5415- }
5416- else if (alarm[rds] == true )
5417- {
5418- if (dev->get_logger ()->is_warn_enabled ())
5419- dev->get_logger ()->warn_stream () << log4tango::LogInitiator::_begin_log << " RDS (Read Different Set) ALARM for attribute " << name << endl;
5420- }
5421- else if (alarm[min_warn] == true )
5422- {
5423- if (dev->get_logger ()->is_warn_enabled ())
5424- dev->get_logger ()->warn_stream () << log4tango::LogInitiator::_begin_log << " MIN WARNING for attribute " << name << endl;
5425- }
5426- else if (alarm[max_warn] == true )
5427- {
5428- if (dev->get_logger ()->is_warn_enabled ())
5429- dev->get_logger ()->warn_stream () << log4tango::LogInitiator::_begin_log << " MAX WARNING for attribute " << name << endl;
5430- }
5406+ log_alarm_quality ();
54315407 }
54325408 }
5433- else
5409+ else if (has_alarm_changed)
54345410 {
5411+ log_alarm_quality ();
5412+ }
5413+ }
54355414
5436- //
5437- // The quality is the same but may be the alarm has changed
5438- //
5439-
5440- if (alarm != old_alarm)
5441- {
5442- if (alarm[min_level] == true )
5443- {
5444- if (dev->get_logger ()->is_error_enabled ())
5445- dev->get_logger ()->error_stream () << log4tango::LogInitiator::_begin_log << " MIN ALARM for attribute " << name << endl;
5446- }
5447- else if (alarm[max_level] == true )
5448- {
5449- if (dev->get_logger ()->is_error_enabled ())
5450- dev->get_logger ()->error_stream () << log4tango::LogInitiator::_begin_log << " MAX ALARM for attribute " << name << endl;
5451- }
5452- else if (alarm[rds] == true )
5453- {
5454- if (dev->get_logger ()->is_warn_enabled ())
5455- dev->get_logger ()->warn_stream () << log4tango::LogInitiator::_begin_log << " RDS (Read Different Set) ALARM for attribute " << name << endl;
5456- }
5457- else if (alarm[min_warn] == true )
5458- {
5459- if (dev->get_logger ()->is_warn_enabled ())
5460- dev->get_logger ()->warn_stream () << log4tango::LogInitiator::_begin_log << " MIN WARNING for attribute " << name << endl;
5461- }
5462- else if (alarm[max_warn] == true )
5463- {
5464- if (dev->get_logger ()->is_warn_enabled ())
5465- dev->get_logger ()->warn_stream () << log4tango::LogInitiator::_begin_log << " MAX WARNING for attribute " << name << endl;
5466- }
5467- }
5415+ void Attribute::log_alarm_quality () const
5416+ {
5417+ if (alarm[min_level])
5418+ {
5419+ DEV_ERROR_STREAM (dev) << " MIN ALARM for attribute " << name << std::endl;
5420+ }
5421+ else if (alarm[max_level])
5422+ {
5423+ DEV_ERROR_STREAM (dev) << " MAX ALARM for attribute " << name << std::endl;
5424+ }
5425+ else if (alarm[rds])
5426+ {
5427+ DEV_WARN_STREAM (dev) << " RDS (Read Different Set) ALARM for attribute " << name << std::endl;
5428+ }
5429+ else if (alarm[min_warn])
5430+ {
5431+ DEV_WARN_STREAM (dev) << " MIN WARNING for attribute " << name << std::endl;
5432+ }
5433+ else if (alarm[max_warn])
5434+ {
5435+ DEV_WARN_STREAM (dev) << " MAX WARNING for attribute " << name << std::endl;
54685436 }
54695437}
54705438
0 commit comments