| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | 
							- /*=============================================================================
 
-   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 CTKEABLACKLISTINGHANDLERTASKS_P_H
 
- #define CTKEABLACKLISTINGHANDLERTASKS_P_H
 
- #include "ctkEAHandlerTasks_p.h"
 
- #include <ctkPluginContext.h>
 
- #include <ctkEventAdminActivator_p.h>
 
- #include <service/event/ctkEventConstants.h>
 
- #include <service/event/ctkEventHandler.h>
 
- #include "ctkEATopicHandlerFilters_p.h"
 
- #include "ctkEAFilters_p.h"
 
- #include "ctkEABlackList_p.h"
 
- /**
 
-  * This class is an implementation of the ctkEAHandlerTasks interface that does provide
 
-  * blacklisting of event handlers. Furthermore, handlers are determined from the
 
-  * framework on any call to <tt>createHandlerTasks()</tt> hence, there is no
 
-  * book-keeping of <tt>ctkEventHandler</tt> services while they come and go but a
 
-  * query for each sent event. In order to do this, an ldap-filter is created that
 
-  * will match applicable <tt>ctkEventHandler</tt> references. In order to ease some of
 
-  * the overhead pains of this approach some light caching is going on.
 
-  */
 
- template<class BlackList, class TopicHandlerFilters, class Filters>
 
- class ctkEABlacklistingHandlerTasks :
 
-     public ctkEAHandlerTasks<
 
-     ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters> >
 
- {
 
- private:
 
-   typedef ctkEABlacklistingHandlerTasks<BlackList, TopicHandlerFilters, Filters> Self;
 
-   // The blacklist that holds blacklisted event handler service references
 
-   ctkEABlackList<BlackList>* const blackList;
 
-   // The context of the plugin used to get the actual event handler services
 
-   ctkPluginContext* const context;
 
-   // Used to create the filters that can determine applicable event handlers for
 
-   // a given event
 
-   ctkEATopicHandlerFilters<TopicHandlerFilters>* topicHandlerFilters;
 
-   // Used to create the filters that are used to determine whether an applicable
 
-   // event handler is interested in a particular event
 
-   ctkEAFilters<Filters>* filters;
 
- public:
 
-   /**
 
-    * The constructor of the factory.
 
-    *
 
-    * @param context The context of the plugin
 
-    * @param blackList The set to use for keeping track of blacklisted references
 
-    * @param topicHandlerFilters The factory for topic handler filters
 
-    * @param filters The factory for <tt>ctkLDAPSearchFilter</tt> objects
 
-    */
 
-   ctkEABlacklistingHandlerTasks(ctkPluginContext* context,
 
-                                 ctkEABlackList<BlackList>* blackList,
 
-                                 ctkEATopicHandlerFilters<TopicHandlerFilters>* topicHandlerFilters,
 
-                                 ctkEAFilters<Filters>* filters);
 
-   ~ctkEABlacklistingHandlerTasks();
 
-   /**
 
-    * Create the handler tasks for the event. All matching event handlers are
 
-    * determined and delivery tasks for them returned.
 
-    *
 
-    * @param event The event for which' handlers delivery tasks must be created
 
-    *
 
-    * @return A delivery task for each handler that matches the given event
 
-    *
 
-    * @see ctkHandlerTasks#createHandlerTasks(const ctkEvent&)
 
-    */
 
-   QList<ctkEAHandlerTask<Self> > createHandlerTasks(const ctkEvent& event);
 
-   /**
 
-    * Blacklist the given service reference. This is a private method and only
 
-    * public due to its usage in a friend class.
 
-    *
 
-    * @param handlerRef The service reference to blacklist
 
-    */
 
-   void blackListRef(const ctkServiceReference& handlerRef);
 
-   /**
 
-    * Get the real ctkEventHandler service for the handlerRef from the context in case
 
-    * the ref is not blacklisted and the service is not unregistered. The
 
-    * NullEventHandler object is returned otherwise. This is a private method and
 
-    * only public due to its usage in a friend class.
 
-    *
 
-    * @param handlerRef The service reference for which to get its service
 
-    * @return The service of the reference or a null object if the service is
 
-    *      unregistered
 
-    */
 
-   ctkEventHandler* getEventHandler(const ctkServiceReference& handlerRef);
 
-   /**
 
-    * Unget the service reference for the given event handler unless it is the
 
-    * NullEventHandler. This is a private method and only public due to
 
-    * its usage in a friend class.
 
-    *
 
-    * @param handler The event handler service to unget
 
-    * @param handlerRef The service reference to unget
 
-    */
 
-   void ungetEventHandler(ctkEventHandler* handler,
 
-                          const ctkServiceReference& handlerRef);
 
- private:
 
-   /*
 
-    * This is a null object that is supposed to do nothing. This is used once an
 
-    * EventHandler is requested for a service reference that is either stale
 
-    * (i.e., unregistered) or blacklisted
 
-    */
 
-   struct NullEventHandler : public ctkEventHandler
 
-   {
 
-     /**
 
-      * This is a null object that is supposed to do nothing at this point.
 
-      *
 
-      * @param event an event that is not used
 
-      */
 
-     void handleEvent(const ctkEvent& /*event*/)
 
-     {
 
-       // This is a null object that is supposed to do nothing at this
 
-       // point. This is used once a ctkEventHandler is requested for a
 
-       // servicereference that is either stale (i.e., unregistered) or
 
-       // blacklisted.
 
-     }
 
-   };
 
-   NullEventHandler nullEventHandler;
 
-   /*
 
-    * This is a utility method that will throw a <tt>ctkInvalidArgumentException</tt>
 
-    * in case that the given object is null. The message will be of the form name +
 
-    * may not be null.
 
-    */
 
-   void checkNull(void* object, const QString& name);
 
- };
 
- #include "ctkEABlacklistingHandlerTasks.tpp"
 
- #endif // CTKEABLACKLISTINGHANDLERTASKS_P_H
 
 
  |