123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /*=============================================================================
- Library: CTK
- Copyright (c) German Cancer Research Center,
- Division of Medical and Biological Informatics
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- =============================================================================*/
- #ifndef CTKEVENTHANDLER_H
- #define CTKEVENTHANDLER_H
- #include "ctkEvent.h"
- /**
- * \ingroup EventAdmin
- *
- * Listener for Events.
- *
- * <p>
- * <code>ctkEventHandler</code> objects are registered with the Framework service
- * registry and are notified with an <code>ctkEvent</code> object when an event
- * is sent or posted.
- * <p>
- * <code>ctkEventHandler</code> objects can inspect the received
- * <code>ctkEvent</code> object to determine its topic and properties.
- *
- * <p>
- * <code>ctkEventHandler</code> objects must be registered with a service
- * property {@link ctkEventConstants#EVENT_TOPIC} whose value is the list of topics
- * in which the event handler is interested.
- * <p>
- * For example:
- *
- * \code
- * QStringList topics("com/isv/*");
- * ctkDictionary props;
- * props.insert(ctkEventConstants::EVENT_TOPIC, topics);
- * context->registerService<ctkEventHandler>(this, props);
- * \endcode
- *
- * Event Handler services can also be registered with an
- * {@link ctkEventConstants#EVENT_FILTER} service property to further filter the
- * events. If the syntax of this filter is invalid, then the Event Handler must
- * be ignored by the Event Admin service. The Event Admin service should log a
- * warning.
- * <p>
- * Security Considerations. Plugins wishing to monitor <code>ctkEvent</code>
- * objects will require <code>ctkServicePermission[ctkEventHandler,REGISTER]</code>
- * to register a <code>ctkEventHandler</code> service. The plugin must also have
- * <code>ctkTopicPermission[topic,SUBSCRIBE]</code> for the topic specified in
- * the event in order to receive the event.
- *
- * @see ctkEvent
- *
- * @remarks This class is thread safe.
- */
- struct ctkEventHandler
- {
- virtual ~ctkEventHandler() {}
- /**
- * Called by the {@link ctkEventAdmin} service to notify the listener of an
- * event.
- *
- * @param event The event that occurred.
- */
- virtual void handleEvent(const ctkEvent& event) = 0;
- };
- Q_DECLARE_INTERFACE(ctkEventHandler, "org.commontk.service.event.EventHandler")
- #endif // CTKEVENTHANDLER_H
|