123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- /*=============================================================================
- 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.
- =============================================================================*/
- #include "ctkEAMetaTypeProvider_p.h"
- #include "ctkEAConfiguration_p.h"
- #include <limits>
- class ctkEAMetaTypeProvider::ObjectClassDefinitionImpl : public ctkObjectClassDefinition
- {
- private:
- QList<ctkAttributeDefinitionPtr> attrs;
- public:
- ObjectClassDefinitionImpl(const QList<ctkAttributeDefinitionPtr>& attrs)
- : attrs(attrs)
- {
- }
- QString getName() const
- {
- return "CommonTK Event Admin Implementation";
- }
- QByteArray getIcon(int size) const
- {
- Q_UNUSED(size)
- return QByteArray();
- }
- QString getID() const
- {
- return ctkEAConfiguration::PID;
- }
- QString getDescription() const
- {
- return "Configuration for the CommonTK Event Admin Implementation."
- " This configuration overwrites configuration defined in framework properties of the same names.";
- }
- QList<ctkAttributeDefinitionPtr> getAttributeDefinitions(Filter filter)
- {
- return (filter == OPTIONAL) ? QList<ctkAttributeDefinitionPtr>() : attrs;
- }
- };
- class ctkEAMetaTypeProvider::AttributeDefinitionImpl : public ctkAttributeDefinition
- {
- private:
- const QString id;
- const QString name;
- const QString description;
- const int type;
- const QStringList defaultValues;
- const int cardinality;
- const QStringList optionLabels;
- const QStringList optionValues;
- public:
- AttributeDefinitionImpl(const QString& id, const QString& name, const QString& description, int type,
- const QStringList& defaultValues, int cardinality = 0,
- const QStringList& optionLabels = QStringList(),
- const QStringList& optionValues = QStringList())
- : id(id), name(name), description(description), type(type),
- defaultValues(defaultValues), cardinality(cardinality),
- optionLabels(optionLabels), optionValues(optionValues)
- {
- }
- int getCardinality() const
- {
- return cardinality;
- }
- QStringList getDefaultValue() const
- {
- return defaultValues;
- }
- QString getDescription() const
- {
- return description;
- }
- QString getID() const
- {
- return id;
- }
- QString getName() const
- {
- return name;
- }
- QStringList getOptionLabels() const
- {
- return optionLabels;
- }
- QStringList getOptionValues() const
- {
- return optionValues;
- }
- int getType() const
- {
- return type;
- }
- QString validate(const QString& str) const
- {
- Q_UNUSED(str)
- return QString();
- }
- };
- ctkEAMetaTypeProvider::ctkEAMetaTypeProvider(ctkManagedService* delegatee, int cacheSize,
- int threadPoolSize, int timeout, bool requireTopic,
- const QStringList& ignoreTimeout)
- : m_cacheSize(cacheSize), m_threadPoolSize(threadPoolSize), m_timeout(timeout),
- m_requireTopic(requireTopic), m_ignoreTimeout(ignoreTimeout), m_delegatee(delegatee)
- {
- }
- void ctkEAMetaTypeProvider::updated(const ctkDictionary& properties)
- {
- m_delegatee->updated(properties);
- }
- QList<QLocale> ctkEAMetaTypeProvider::getLocales() const
- {
- return QList<QLocale>();
- }
- ctkObjectClassDefinitionPtr ctkEAMetaTypeProvider::getObjectClassDefinition(const QString& id, const QLocale& locale)
- {
- Q_UNUSED(locale)
- if (ctkEAConfiguration::PID != id)
- {
- return ctkObjectClassDefinitionPtr();
- }
- if (!ocd)
- {
- QList<ctkAttributeDefinitionPtr> adList;
- adList.push_back(ctkAttributeDefinitionPtr(
- new AttributeDefinitionImpl(ctkEAConfiguration::PROP_CACHE_SIZE, "Cache Size",
- "The size of various internal caches. The default value is 30. Increase in case "
- "of a large number (more then 100) of services. A value less then 10 triggers the "
- "default value.", QVariant::Int, QStringList(QString::number(m_cacheSize)))));
- adList.push_back(ctkAttributeDefinitionPtr(
- new AttributeDefinitionImpl(ctkEAConfiguration::PROP_THREAD_POOL_SIZE, "Thread Pool Size",
- "The size of the thread pool. The default value is 10. Increase in case of a large amount "
- "of synchronous events where the event handler 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.",
- QVariant::Int, QStringList(QString::number(m_threadPoolSize)))));
- adList.push_back(ctkAttributeDefinitionPtr(
- new AttributeDefinitionImpl(ctkEAConfiguration::PROP_TIMEOUT, "Timeout",
- "The black-listing timeout in milliseconds. 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 event handler before it gets blacklisted",
- QVariant::Int, QStringList(QString::number(m_timeout)))));
- adList.push_back(ctkAttributeDefinitionPtr(
- new AttributeDefinitionImpl(ctkEAConfiguration::PROP_REQUIRE_TOPIC, "Require Topic",
- "Are event handlers required to be registered with a topic? "
- "This is enabled by default. The specification says that event handlers "
- "must register with a list of topics they are interested in. Disabling this setting "
- "will enable that handlers without a topic are receiving all events "
- "(i.e., they are treated the same as with a topic=*).",
- QVariant::Bool, m_requireTopic ? QStringList("true") : QStringList("false"))));
- adList.push_back(ctkAttributeDefinitionPtr(
- new AttributeDefinitionImpl(ctkEAConfiguration::PROP_IGNORE_TIMEOUT, "Ignore Timeouts",
- "Configure event handlers to be called without a timeout. 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.",
- QVariant::String, m_ignoreTimeout, 0,
- QStringList(QString::number(std::numeric_limits<int>::max())))));
- ocd = ctkObjectClassDefinitionPtr(new ObjectClassDefinitionImpl(adList));
- }
- return ocd;
- }
|