PIP 5.5.3
Platform-Independent Primitives
Открытые члены | Полный список членов класса
Класс PISingleApplication

Контроль одного экземпляра приложения. Подробнее...

#include <pisingleapplication.h>

Граф наследования:PISingleApplication:
Inheritance graph
[см. легенду]

Открытые члены

 PISingleApplication (const PIString &app_name=PIString())
 Создает PISingleApplication с именем "app_name".
 
bool isFirst () const
 Возвращает первым ли был запущен этот экземпляр приложения
 
- Открытые члены унаследованные от PIThread
 PIThread (void *data, ThreadFunc func, bool startNow=false, PISystemTime loop_delay={})
 Создает поток с данными "data", функцией "func" и задержкой цикла "loop_delay".
 
 PIThread (std::function< void()> func, bool startNow=false, PISystemTime loop_delay={})
 Создает поток с функцией "func" и задержкой цикла "loop_delay".
 
 PIThread (bool startNow=false, PISystemTime loop_delay={})
 Создает поток с задержкой цикла "loop_delay".
 
bool start ()
 Запускает поток
 
bool start (PISystemTime loop_delay)
 Запускает поток
 
bool start (ThreadFunc func)
 Запускает поток
 
bool start (ThreadFunc func, PISystemTime loop_delay)
 Запускает поток
 
bool start (std::function< void()> func)
 Запускает поток
 
bool start (std::function< void()> func, PISystemTime loop_delay)
 Запускает поток
 
bool startOnce ()
 Запускает поток без внутреннего цикла Подробнее...
 
bool startOnce (ThreadFunc func)
 Запускает поток без внутреннего цикла Подробнее...
 
bool startOnce (std::function< void()> func)
 Запускает поток без внутреннего цикла
 
bool stopAndWait (PISystemTime timeout={})
 Останавливает поток и ожидает завершения. Возвращает false если таймаут истек.
 
void setData (void *d)
 Устанавливает данные, передаваемые в функцию потока
 
void setSlot (ThreadFunc func)
 Устанавливает функцию потока, вызываемую после каждого run()
 
void setSlot (std::function< void()> func)
 Устанавливает функцию потока, вызываемую после каждого run()
 
void setPriority (PIThread::Priority prior)
 Устанавливает приоритет потока
 
void * data () const
 Возвращает данные, передаваемые в функцию потока
 
PIThread::Priority priority () const
 Возвращает приоритет потока
 
bool isRunning () const
 Возвращает исполняется ли поток
 
bool isStopping () const
 Возвращает останавливается ли поток
 
bool waitForStart (PISystemTime timeout={})
 Ожидает старта потока
 
bool waitForStart (int timeout_msecs) DEPRECATEDM("use waitForStart(PISystemTime)")
 
bool waitForFinish (PISystemTime timeout={})
 Ожидает завершения потока. Возвращает false если таймаут истек.
 
bool waitForFinish (int timeout_msecs) DEPRECATEDM("use waitForFinish(PISystemTime)")
 
void needLockRun (bool need)
 Устанавливает необходимость блокировки внутреннего мьютекса каждый run()
 
PIMutexmutex () const
 Возвращает внутренний мьютекс
 
llong tid () const
 Возвращает ID потока
 
void stop ()
 Останавливает поток Подробнее...
 
void terminate ()
 Жёстко прерывает поток Подробнее...
 
void lock () const
 Блокирует внутренний мьютекс
 
void unlock () const
 Разблокирует внутренний мьютекс
 
void started ()
 Вызывается при старте потока
 
void stopped ()
 Вызывается при завершении потока
 
- Открытые члены унаследованные от PIObject
 PIObject (const PIString &name=PIString())
 Создает PIObject с именем "name".
 
PIString name () const
 Возвращает имя объекта
 
virtual const char * className () const
 Возвращает имя класса объекта
 
virtual const char * parentClassName () const
 Возвращает имя родительского класса
 
bool debug () const
 Возвращает включен ли вывод piCoutObj для этого объекта
 
void setName (const PIString &name)
 Устанавливает имя объекта
 
void setDebug (bool debug)
 Включает или отключает вывод piCoutObj для этого объекта
 
PIVariant property (const char *name) const
 Возвращает свойство объекта по имени "name".
 
void setProperty (const char *name, const PIVariant &value)
 Устанавливает у объекта свойство по имени "name" в "value". Если такого свойства нет, оно добавляется
 
bool isPropertyExists (const char *name) const
 Возвращает присутствует ли свойство по имени "name".
 
PIStringList scopeList () const
 Возвращает цепочку наследования объекта (вместе с классом самого объекта)
 
void piDisconnect (const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает все соединения от события "sig" к объекту "dest" и обработчику "ev_h".
 
void piDisconnect (const PIString &sig, PIObject *dest)
 Разрывает все соединения от события "sig" к объекту "dest".
 
void piDisconnect (const PIString &sig)
 Разрывает все соединения от события "sig".
 
bool isPIObject () const
 Возвращает действительный ли это PIObject (проверяет подпись)
 
template<typename T >
bool isTypeOf () const
 Возвращает действительный ли это наследник PIObject типа "T" (проверяет подпись и имя класса)
 
template<typename T >
T * cast () const
 Возвращает преобразование к типу T если это действительный наследник типа "T" (проверяет через isTypeOf()), или "nullptr".
 
void callQueuedEvents ()
 Выполнить все отложенные события от CONNECTU_QUEUED соединений
 
bool maybeCallQueuedEvents ()
 Если было хотя бы одно CONNECTU_QUEUED соединение с исполнителем this, то выполнить события Подробнее...
 
void deleteLater ()
 Пометить объект на удаление Подробнее...
 
void deleted (PIObject *o)
 Вызывается перед удалением объекта Подробнее...
 

Handlers

void sendMessage (const PIByteArray &m)
 Посылает сообщение "m" первому запущеному приложению
 

Events

void messageReceived (PIByteArray m)
 Вызывается первым запущеным приложением по приему сообщения от других
 

Дополнительные унаследованные члены

- Открытые типы унаследованные от PIThread
enum  Priority {
  piLowerst , piLow , piNormal , piHigh ,
  piHighest
}
 Приоритет потока Подробнее...
 
- Открытые статические члены унаследованные от PIThread
static void runOnce (PIObject *object, const char *handler, const PIString &name=PIString())
 Вызывает обработчик "handler" объекта "object" в отдельном потоке Подробнее...
 
static void runOnce (std::function< void()> func, const PIString &name=PIString())
 Вызывает лямбда-выражение "func" в отдельном потоке Подробнее...
 
- Открытые статические члены унаследованные от PIObject
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает все соединения от события "sig" объекта "src" к объекту "dest" и обработчику "ev_h".
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest)
 Разрывает все соединения от события "sig" объекта "src" к объекту "dest".
 
static void piDisconnect (PIObject *src, const PIString &sig)
 Разрывает все соединения от события "sig" объекта "src".
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
static bool isPIObject (const PIObject *o)
 Возвращает действительный ли "o" PIObject (проверяет подпись)
 
template<typename T >
static bool isTypeOf (const PIObject *o)
 Возвращает действительный ли "o" наследник PIObject типа "T" (проверяет подпись и имя класса)
 
- Защищенные члены унаследованные от PIThread
virtual void begin ()
 Метод выполняется один раз при старте потока
 
virtual void run ()
 Метод выполняется каждые "loop_delay" миллисекунд
 
virtual void end ()
 Метод выполняется один раз при остановке потока
 
- Защищенные члены унаследованные от PIObject
PIObjectemitter () const
 Возвращает PIObject* который вызвал это событие. Значение допустимо только из методов обработчиков событий
 
virtual void propertyChanged (const char *name)
 Виртуальная функция, вызывается после изменения любого свойства.
 

Подробное описание

Контроль одного экземпляра приложения.

Этот класс позволяет отслеживать повторный запуск приложения и передавать сообщение первому запущеному.

Видят друг друга PISingleApplication с одинаковыми "app_name", задаваемым в конструкторе.

Если проверка isFirst() успешна, значит этот экземпляр запущен первым, и можно соединиться к событию messageReceived().

Если проверка провалена, значит этот экземпляр не первый, и можно послать ему сообщение с помощью sendMessage(), а затем выйти.

int main(int argc, char * argv[]) {
PISingleApplication sapp("myapp");
if (sapp.isFirst()) {
piCout << "I`m first, wait for another";
piCout << "Msg from another:" << PIString(msg);
});
} else {
piCout << "I`m not first, send and exit";
sapp.sendMessage(PIString("Hello!").toByteArray());
return 0;
}
return 0;
}
Класс PIByteArray представляет собой массив байтов.
Definition: pibytearray.h:42
#define CONNECTL(src, event, functor)
Соединяет событие "event" объекта "src" к лямбда-функции "functor".
Definition: piobject_macros.h:218
Контроль одного экземпляра приложения.
Definition: pisingleapplication.h:37
void messageReceived(PIByteArray m)
Вызывается первым запущеным приложением по приему сообщения от других
Класс строки.
Definition: pistring.h:42
PIByteArray toByteArray() const
Тоже самое, что toUTF8().
Definition: pistring.h:1109
#define WAIT_FOREVER
Макрос для бесконечного ожидания
Definition: pibase_macros.h:415
#define piCout
Макрос для условного (piDebug) вывода в PICout(StdOut)
Definition: picout.h:35