-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathCDBRecordsArray.cpp
81 lines (64 loc) · 1.88 KB
/
CDBRecordsArray.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
Copyright [2010] [Richard Bross]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#include "CDBRecordsArray.h"
CDBRecordsArray::CDBRecordsArray()
{
bIsLocked = false;
fTotalElapsed = 0.0f;
}
CDBRecordsArray::CDBRecordsArray(const CDBRecordsArray& orig)
{
cDBMutex.Lock();
vDBRecords = orig.vDBRecords;
fTotalElapsed = orig.fTotalElapsed;
cDBMutex.Unlock();
}
CDBRecordsArray::~CDBRecordsArray()
{
}
// Add to DB record array
void CDBRecordsArray::DBRecordAdd(const char *pRecord, float fElapsed)
{
cDBMutex.Lock();
vDBRecords.push_back(pRecord);
fTotalElapsed += fElapsed;
cDBMutex.Unlock();
}
//! Add a whole array of records
void CDBRecordsArray::DBRecordAdd(VEC_DB_RECORDS &vRec, float fElapsed)
{
cDBMutex.Lock();
vDBRecords.insert(vDBRecords.end(), vRec.begin(), vRec.end());
fTotalElapsed += fElapsed;
cDBMutex.Unlock();
}
// Get DB record array - locks the array
VEC_DB_RECORDS *CDBRecordsArray::LockDBRecords()
{
cDBMutex.Lock();
bIsLocked = true;
return &vDBRecords;
}
// Release DB record array - must be called after "GetRecordArray"
void CDBRecordsArray::UnlockDBRecords()
{
cDBMutex.Unlock();
bIsLocked = false;
}
// Warning - MUST BE LOCKED FIRST
bool CDBRecordsArray::ClearDBRecords()
{ // Make sure at least someone has a lock on it
if (bIsLocked)
vDBRecords.clear();
return (bIsLocked);
}