code: void pushReceivedException(EventChannelStruct event_channel_struct, EventCallBackStruct callback_struct, DevError error) {
          try {
              if (event_channel_struct != null) {
                  if (event_channel_struct.consumer instanceof NotifdEventConsumer) {
                      if (!callback_struct.filter_ok) {
                          callback_struct.filter_id = NotifdEventConsumer.getInstance().add_filter_for_channel(
                                  event_channel_struct, callback_struct.filter_constraint);
                          callback_struct.filter_ok = true;
                      }
                  }
              } else
                  return;
  
              int eventSource = (event_channel_struct.consumer instanceof NotifdEventConsumer)?
                      EventData.NOTIFD_EVENT : EventData.ZMQ_EVENT;
              DevError[] errors = {error};
              String domain_name = callback_struct.device.name();
              if (callback_struct.attr_name!=null)
                  domain_name += "/" + callback_struct.attr_name.toLowerCase();
              EventData event_data =
                      new EventData(event_channel_struct.adm_device_proxy,
                              domain_name, callback_struct.event_name, callback_struct.event_type,
                              eventSource, null, null, null, null, null, errors);
  
              CallBack callback = callback_struct.callback;
              event_data.device = callback_struct.device;
              event_data.name = callback_struct.device.name();
              event_data.event = callback_struct.event_name;
  
              if (callback_struct.use_ev_queue) {
                  EventQueue ev_queue = callback_struct.device.getEventQueue();
                  ev_queue.insert_event(event_data);
              } else
                  callback.push_event(event_data);
  
          } catch (DevFailed e) { /* */ }
      }
docs: ===============================================================