/*! \file pisingleapplication.h * \ingroup System * \~\brief * \~english Single-instance application control * \~russian Контроль одного экземпляра приложения */ /* PIP - Platform Independent Primitives Single application Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef PISINGLEAPPLICATION_H #define PISINGLEAPPLICATION_H #include "pithread.h" class PISharedMemory; //! \ingroup System //! \~\brief //! \~english Single-instance application control. //! \~russian Контроль одного экземпляра приложения. class PIP_EXPORT PISingleApplication: public PIThread { PIOBJECT_SUBCLASS(PISingleApplication, PIThread) public: //! \~english Construct %PISingleApplication with name "app_name" //! \~russian Создает %PISingleApplication с именем "app_name" PISingleApplication(const PIString & app_name = PIString()); ~PISingleApplication(); //! \~english Returns if this application instance is launched first //! \~russian Возвращает первым ли был запущен этот экземпляр приложения bool isFirst() const; EVENT_HANDLER1(void, sendMessage, const PIByteArray &, m); EVENT1(messageReceived, PIByteArray, m) //! \handlers //! \{ //! \fn void sendMessage(const PIByteArray & m) //! \brief //! \~english Send message "m" to first launched application //! \~russian Посылает сообщение "m" первому запущеному приложению //! \} //! \events //! \{ //! \fn void messageReceived(PIByteArray m) //! \brief //! \~english Raise on first launched application receive message from another //! \~russian Вызывается первым запущеным приложением по приему сообщения от других //! \} private: void begin(); void run(); void waitFirst() const; PISharedMemory * shm; PITimeMeasurer ftm; PIByteArray readed; bool first, started; int sacnt; }; #endif // PISINGLEAPPLICATION_H