123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- /*=============================================================================
- 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 CTKAPPLICATIONHANDLE_H
- #define CTKAPPLICATIONHANDLE_H
- #include <ctkPluginFrameworkExport.h>
- #include <QObject>
- #include <QString>
- class QVariant;
- struct ctkApplicationDescriptor;
- /**
- * ApplicationHandle is a service interface which represents an instance
- * of an application. It provides the functionality to query and manipulate the
- * lifecycle state of the represented application instance. It defines constants
- * for the lifecycle states.
- */
- struct CTK_PLUGINFW_EXPORT ctkApplicationHandle
- {
- /**
- * The property key for the unique identifier (PID) of the application
- * instance.
- */
- static const QString APPLICATION_PID; // = ctkPluginConstants::SERVICE_PID;
- /**
- * The property key for the pid of the corresponding application descriptor.
- */
- static const QString APPLICATION_DESCRIPTOR; // = "application.descriptor";
- /**
- * The property key for the state of this application instance.
- */
- static const QString APPLICATION_STATE; // = "application.state";
- /**
- * The property key for the supports exit value property of this application
- * instance.
- */
- static const QString APPLICATION_SUPPORTS_EXITVALUE; // = "application.supports.exitvalue";
- /**
- * The application instance is running. This is the initial state of a newly
- * created application instance.
- */
- static const QString RUNNING; // = "RUNNING";
- /**
- * The application instance is being stopped. This is the state of the
- * application instance during the execution of the <code>destroy()</code>
- * method.
- */
- static const QString STOPPING; // = "STOPPING";
- virtual ~ctkApplicationHandle() {}
- /**
- * Retrieves the <code>IApplicationDescriptor</code> to which this
- * <code>IApplicationHandle</code> belongs.
- *
- * @return The corresponding <code>IApplicationDescriptor</code>
- */
- virtual ctkApplicationDescriptor* getApplicationDescriptor() const = 0;
- /**
- * Get the state of the application instance.
- *
- * @return the state of the application.
- *
- * @throws ctkIllegalStateException
- * if the application handle is unregistered
- */
- virtual QString getState() const = 0;
- /**
- * Returns the exit value for the application instance. The timeout
- * specifies how the method behaves when the application has not yet
- * terminated. A negative, zero or positive value may be used.
- * <ul>
- * <li> negative - The method does not wait for termination. If the
- * application has not terminated then an <code>ctkApplicationException</code>
- * is thrown.</li>
- *
- * <li> zero - The method waits until the application terminates.</li>
- *
- * <li> positive - The method waits until the application terminates or the
- * timeout expires. If the timeout expires and the application has not
- * terminated then an <code>ctkApplicationException</code> is thrown.</li>
- * </ul>
- *
- * @param timeout The maximum time in milliseconds to wait for the
- * application to timeout.
- * @return The exit value for the application instance. The value is
- * application specific.
- * @throws ctkUnsupportedOperationException If the application model does not
- * support exit values.
- * @throws ctkApplicationException If the application has not terminated. The
- * error code will be
- * ctkApplicationException::APPLICATION_EXITVALUE_NOT_AVAILABLE.
- */
- virtual QVariant getExitValue(long timeout) const = 0;
- /**
- * Returns the unique identifier of this instance. This value is also
- * available as a service property of this application handle's service.pid.
- *
- * @return the unique identifier of the instance
- */
- virtual QString getInstanceId() const = 0;
- /**
- * The application instance's lifecycle state can be influenced by this
- * method. It lets the application instance perform operations to stop
- * the application safely, e.g. saving its state to a permanent storage.
- * <p>
- * The method must check if the lifecycle transition is valid; a STOPPING
- * application cannot be stopped. If it is invalid then the method must
- * exit. Otherwise the lifecycle state of the application instance must be
- * set to STOPPING. Then the destroySpecific() method must be called to
- * perform any application model specific steps for safe stopping of the
- * represented application instance.
- * <p>
- * At the end the <code>ctkApplicationHandle</code> must be unregistered.
- * This method should free all the resources related to this
- * <code>ctkApplicationHandle</code>.
- * <p>
- * When this method is completed the application instance has already made
- * its operations for safe stopping, the IApplicationHandle has been
- * unregistered and its related resources has been freed. Further calls on
- * this application should not be made because they may have unexpected
- * results.
- *
- * @throws ctkIllegalStateException
- * if the application handle is unregistered
- */
- virtual void destroy() = 0;
- };
- Q_DECLARE_INTERFACE(ctkApplicationHandle, "org.commontk.service.application.ApplicationHandle")
- #endif // CTKAPPLICATIONHANDLE_H
|