SPTK Home Page
sptk5
UniqueInstance.h
1
/*
2
╔══════════════════════════════════════════════════════════════════════════════╗
3
║ SIMPLY POWERFUL TOOLKIT (SPTK) ║
4
╟──────────────────────────────────────────────────────────────────────────────╢
5
║ copyright © 1999-2022 Alexey Parshin. All rights reserved. ║
6
║ email alexeyp@gmail.com ║
7
╚══════════════════════════════════════════════════════════════════════════════╝
8
┌──────────────────────────────────────────────────────────────────────────────┐
9
│ This library is free software; you can redistribute it and/or modify it │
10
│ under the terms of the GNU Library General Public License as published by │
11
│ the Free Software Foundation; either version 2 of the License, or (at your │
12
│ option) any later version. │
13
│ │
14
│ This library is distributed in the hope that it will be useful, but │
15
│ WITHOUT ANY WARRANTY; without even the implied warranty of │
16
│ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library │
17
│ General Public License for more details. │
18
│ │
19
│ You should have received a copy of the GNU Library General Public License │
20
│ along with this library; if not, write to the Free Software Foundation, │
21
│ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. │
22
│ │
23
│ Please report all bugs and problems to alexeyp@gmail.com. │
24
└──────────────────────────────────────────────────────────────────────────────┘
25
*/
26
27
#pragma once
28
29
#ifdef _WIN32
30
#include <winsock2.h>
31
32
#include <windows.h>
33
#endif
34
35
#include <sptk5/Strings.h>
36
#include <sptk5/sptk.h>
37
38
namespace
sptk {
39
52
class
SP_EXPORT
UniqueInstance
53
{
54
public
:
59
explicit
UniqueInstance
(
String
instanceName);
60
~UniqueInstance
();
61
62
UniqueInstance
(
const
UniqueInstance
&) =
delete
;
63
UniqueInstance
& operator=(
const
UniqueInstance
&) =
delete
;
64
65
#ifndef _WIN32
70
const
String
&
lockFileName
()
const
;
71
#endif
// _WIN32
72
76
bool
isUnique
()
const
;
77
78
private
:
79
String
m_instanceName;
80
bool
m_lockCreated {
false
};
81
#ifdef _WIN32
82
HANDLE m_mutex;
83
#else
84
String
m_fileName;
85
int
read_pid()
const
;
86
int
write_pid();
87
#endif
88
89
void
cleanup();
90
};
94
}
// namespace sptk
sptk::String
Definition:
String.h:49
sptk::UniqueInstance
Unique instance object.
Definition:
UniqueInstance.h:53
sptk::UniqueInstance::UniqueInstance
UniqueInstance(String instanceName)
sptk::UniqueInstance::isUnique
bool isUnique() const
sptk::UniqueInstance::lockFileName
const String & lockFileName() const
Fri Oct 14 2022 09:58:32: SPTK 5.4.1