/** * @RDE_HEADER@ * LocalServer * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "local_server_export.h" #include namespace Esri { namespace ArcGISRuntime { class Error; } } // Qt #include #include #include //---------------------------------------------------------------------------- namespace SituationMap { class LOCALSERVER_EXPORT LocalServiceData { private: QUrl m_svcUrl; bool m_sync = false; public: bool isEmpty() const; void setSvcUrl(const QUrl &svcUrl); const QUrl &svcUrl() const; void setSync(bool sync); bool isSync() const; }; /** * @brief The LocalServer class wrap ESRI`s LocalServer. * This is a container for geoprocessing services * The LocalServer has to be started as well as the seperate instances of LocalGeoprocessingService. * To ease the usage you should set the required number of LocalGeoprocessingService (with different serviceNames). * Then simply start the LocalServer (and if that is up all pending will be started.) */ class LOCALSERVER_EXPORT LocalServer : public QObject { Q_OBJECT using BaseClass = QObject; private: explicit LocalServer(); ~LocalServer(); public: /*! \name Check Installation ( no guarantee )*/ static bool isInstallValid(); /*! \name Singleton */ static LocalServer *instance(); /*! \name LocalServer */ //@{ void start(); void stop(); bool isLocalServerStarted() const; bool isLocalServerStopped() const; //@} /*! \name LocalGeoprocessingService */ //@{ bool setLocalGeoprocessingService(const QString &serviceName, const QString &packagePath, const QString &serviceSubLocation, bool sync); bool startLocalGeoprocessingService(const QString &serviceName); bool stopLocalGeoprocessingService(const QString &serviceName); bool isLocalGeoprocessingServiceStarted(const QString &serviceName) const; bool isLocalGeoprocessingServiceStopped(const QString &serviceName) const; bool isLocalGeoprocessingServiceSynchronousExecute(const QString &serviceName) const; bool isLocalGeoprocessingServiceAsynchronousSubmit(const QString &serviceName) const; bool localGeoprocessingServiceData(const QString &serviceName, LocalServiceData &localServiceDataOut) const; //@} protected: void startAllPendingLocalGeoprocessingServices(); void stopAllLocalGeoprocessingServices(); protected Q_SLOTS: void onLocalServerError(const Esri::ArcGISRuntime::Error &error); void onLocalServerStatusChanged(); void onLGPSError(const Esri::ArcGISRuntime::Error &error); void onLGPSStatusChanged(); Q_SIGNALS: void localServerStatusChanged(); void localGeoprocessingServiceStatusChanged(const QString &serviceName); void localGeoprocessingServiceStarted(const QString &serviceName, const LocalServiceData&localSvcData); private: LOGGER_T m_logger; ///< Interface of the Logging-Facility class Private; /** * The private d->pointer to not break BC when changing internals of this class */ Private *d = nullptr; }; } // namespace SituationMap