| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | 
							- /*=============================================================================
 
-   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 CTKEACONFIGURATION_P_H
 
- #define CTKEACONFIGURATION_P_H
 
- #include <QString>
 
- #include "dispatch/ctkEADefaultThreadPool_p.h"
 
- #include "ctkEventAdminService_p.h"
 
- #include <service/cm/ctkManagedService.h>
 
- class ctkPluginContext;
 
- class ctkEAAbstractAdapter;
 
- /**
 
-  * The <code>ctkEAConfiguration</code> class encapsules the
 
-  * configuration for the event admin.
 
-  *
 
-  * The service knows about the following properties which are read at plugin startup:
 
-  * <p>
 
-  * <p>
 
-  *      <tt>org.commontk.eventadmin.CacheSize</tt> - The size of various internal
 
-  *          caches.
 
-  * </p>
 
-  * The default value is 30. Increase in case of a large number (more then 100) of
 
-  * <tt>ctkEventHandler</tt> services. A value less then 10 triggers the default value.
 
-  * </p>
 
-  * <p>
 
-  * <p>
 
-  *      <tt>org.commontk.eventadmin.ThreadPoolSize</tt> - The size of the thread
 
-  *          pool.
 
-  * </p>
 
-  * The default value is 10. Increase in case of a large amount of synchronous events
 
-  * where the <tt>ctkEventHandler</tt> services in turn send new synchronous events in
 
-  * the event dispatching thread or a lot of timeouts are to be expected. A value of
 
-  * less then 2 triggers the default value. A value of 2 effectively disables thread
 
-  * pooling.
 
-  * </p>
 
-  * <p>
 
-  * <p>
 
-  *      <tt>org.commontk.eventadmin.Timeout</tt> - The black-listing timeout in
 
-  *          milliseconds
 
-  * </p>
 
-  * The default value is 5000. Increase or decrease at own discretion. A value of less
 
-  * then 100 turns timeouts off. Any other value is the time in milliseconds granted
 
-  * to each <tt>ctkEventHandler</tt> before it gets blacklisted.
 
-  * </p>
 
-  * <p>
 
-  * <p>
 
-  *      <tt>org.commontk.eventadmin.RequireTopic</tt> - Are <tt>ctkEventHandler</tt>
 
-  *          required to be registered with a topic?
 
-  * </p>
 
-  * The default is <tt>true</tt>. The specification says that <tt>ctkEventHandler</tt>
 
-  * must register with a list of topics they are interested in. Setting this value to
 
-  * <tt>false</tt> will enable that handlers without a topic are receiving all events
 
-  * (i.e., they are treated the same as with a topic=*).
 
-  * </p>
 
-  * <p>
 
-  * <p>
 
-  *      <tt>org.commontk.eventadmin.IgnoreTimeout</tt> - Configure
 
-  *         <tt>ctkEventHandler</tt>s to be called without a timeout.
 
-  * </p>
 
-  * If a timeout is configured by default all event handlers are called using the timeout.
 
-  * For performance optimization it is possible to configure event handlers where the
 
-  * timeout handling is not used - this reduces the thread usage from the thread pools
 
-  * as the timout handling requires an additional thread to call the event handler.
 
-  * However, the application should work without this configuration property. It is a
 
-  * pure optimization!
 
-  * The value is a list of strings (separated by comma) which is assumed to define
 
-  * exact class names.
 
-  *
 
-  * These properties are read at startup and serve as a default configuration.
 
-  * If a configuration admin is configured, the event admin can be configured
 
-  * through the config admin.
 
-  */
 
- class ctkEAConfiguration : public QObject, public ctkManagedService
 
- {
 
-   Q_OBJECT
 
-   Q_INTERFACES(ctkManagedService)
 
- public:
 
-   /** The PID for the event admin. */
 
-   static const QString PID; // = "org.commontk.eventadmin.impl.EventAdmin"
 
-   static const QString PROP_CACHE_SIZE; // = "org.commontk.eventadmin.CacheSize"
 
-   static const QString PROP_THREAD_POOL_SIZE; // = "org.commontk.eventadmin.ThreadPoolSize"
 
-   static const QString PROP_TIMEOUT; // = "org.commontk.eventadmin.Timeout"
 
-   static const QString PROP_REQUIRE_TOPIC; // = "org.commontk.eventadmin.RequireTopic"
 
-   static const QString PROP_IGNORE_TIMEOUT; // = "org.commontk.eventadmin.IgnoreTimeout"
 
-   static const QString PROP_LOG_LEVEL; // = "org.commontk.eventadmin.LogLevel"
 
- private:
 
-   QMutex mutex;
 
-   /** The plugin context. */
 
-   ctkPluginContext* pluginContext;
 
-   int cacheSize;
 
-   int threadPoolSize;
 
-   int timeout;
 
-   bool requireTopic;
 
-   QStringList ignoreTimeout;
 
-   int logLevel;
 
-   // The thread pool used - this is a member because we need to close it on stop
 
-   ctkEADefaultThreadPool* sync_pool;
 
-   ctkEADefaultThreadPool* async_pool;
 
-   // The actual implementation of the service - this is a member because we need to
 
-   // close it on stop. Note, security is not part of this implementation but is
 
-   // added via a decorator in the start method (this is the wrapped object without
 
-   // the wrapper).
 
-   ctkEventAdminService* admin;
 
-   QScopedPointer<QObject> metaTypeService;
 
-   // The registration of the security decorator factory (i.e., the service)
 
-   ctkServiceRegistration registration;
 
-   // all adapters
 
-   QList<ctkEAAbstractAdapter*> adapters;
 
-   ctkServiceRegistration managedServiceReg;
 
- public:
 
-   ctkEAConfiguration(ctkPluginContext* pluginContext);
 
-   ~ctkEAConfiguration();
 
-   void updated(const ctkDictionary& properties);
 
-   void updateFromConfigAdmin(const ctkDictionary& config);
 
-   /**
 
-    * Configures this instance.
 
-    */
 
-   void configure(const ctkDictionary& config);
 
-   /**
 
-    * Called upon stopping the plugin. This will block until all pending events are
 
-    * delivered. An ctkIllegalStateException will be thrown on new events starting with
 
-    * the begin of this method. However, it might take some time until we settle
 
-    * down which is somewhat cumbersome given that the spec asks for return in
 
-    * a timely manner.
 
-    */
 
-   void destroy();
 
- private:
 
-   void startOrUpdate();
 
-   /**
 
-    * Init the adapters in org.commontk.eventadmin.impl.adapter
 
-    */
 
-   void adaptEvents(ctkEventAdmin* admin);
 
-   QObject* tryToCreateMetaTypeProvider(ctkManagedService* managedService);
 
-   /**
 
-    * Returns either the parsed int from the value of the property if it is set and
 
-    * not less then the min value or the default. Additionally, a warning is
 
-    * generated in case the value is erroneous (i.e., can not be parsed as an int or
 
-    * is less then the min value).
 
-    */
 
-   int getIntProperty(const QString& key, const QVariant& value,
 
-                      int defaultValue, int min);
 
-   /**
 
-    * Returns true if the value of the property is set and is either 1, true, or yes
 
-    * Returns false if the value of the property is set and is either 0, false, or no
 
-    * Returns the defaultValue otherwise
 
-    */
 
-   bool getBoolProperty(const QVariant& obj, bool defaultValue);
 
- };
 
- #endif // CTKEACONFIGURATION_P_H
 
 
  |