diff options
author | Itay Grudev <itay@grudev.com> | 2016-08-10 02:42:46 +0100 |
---|---|---|
committer | Itay Grudev <itay@grudev.com> | 2016-08-10 03:41:03 +0100 |
commit | 4e5c1647ccb119b6a536f7ac89e70018427b3ece (patch) | |
tree | de97f11898a02a7671aa58ae66dd78eaed83b32b /singleapplication_p.h | |
parent | Fixed signal formatting (diff) | |
download | singleapplication-4e5c1647ccb119b6a536f7ac89e70018427b3ece.tar.xz |
SingleApplication v3.0a
Diffstat (limited to 'singleapplication_p.h')
-rw-r--r-- | singleapplication_p.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/singleapplication_p.h b/singleapplication_p.h new file mode 100644 index 0000000..0769a53 --- /dev/null +++ b/singleapplication_p.h @@ -0,0 +1,80 @@ +// The MIT License (MIT) +// +// Copyright (c) Itay Grudev 2015 - 2016 +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// +// W A R N I N G !!! +// ----------------- +// +// This file is not part of the SingleApplication API. It is used purely as an +// implementation detail. This header file may change from version to +// version without notice, or may even be removed. +// + +#ifndef SINGLEAPPLICATION_P_H +#define SINGLEAPPLICATION_P_H + +#include <QtCore/QSharedMemory> +#include <QtNetwork/QLocalServer> +#include <QtNetwork/QLocalSocket> +#include "singleapplication.h" + +struct InstancesInfo { + bool primary; + quint32 secondary; +}; + +class SingleApplicationPrivate : public QObject { +Q_OBJECT +public: + Q_DECLARE_PUBLIC(SingleApplication) + + SingleApplicationPrivate( SingleApplication *q_ptr ); + ~SingleApplicationPrivate(); + + void genBlockServerName( int msecs ); + void startPrimary( bool resetMemory ); + void startSecondary(); + void connectToPrimary( int msecs, char connectionType ); + void cleanUp(); + +#ifdef Q_OS_UNIX + void crashHandler(); + static void terminate( int signum ); + static QList<SingleApplicationPrivate*> sharedMem; + static QMutex sharedMemMutex; +#endif + + QSharedMemory *memory; + SingleApplication *q_ptr; + QLocalSocket *socket; + QLocalServer *server; + quint32 instanceNumber; + QString blockServerName; + SingleApplication::Options options; + +public Q_SLOTS: + void slotConnectionEstablished(); + void slotDataAvailable( QLocalSocket*, quint32 ); + void slotClientConnectionClosed( QLocalSocket*, quint32 ); +}; + +#endif // SINGLEAPPLICATION_P_H |