activemq-cpp-3.6.0
Main Page
Namespaces
Data Structures
Files
File List
Globals
AtomicRefCounter.h
Go to the documentation of this file.
1
/*
2
* Licensed to the Apache Software Foundation (ASF) under one or more
3
* contributor license agreements. See the NOTICE file distributed with
4
* this work for additional information regarding copyright ownership.
5
* The ASF licenses this file to You under the Apache License, Version 2.0
6
* (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*/
17
18
#ifndef _DECAF_UTIL_CONCURRENT_ATOMIC_ATOMICREFCOUNTER_H_
19
#define _DECAF_UTIL_CONCURRENT_ATOMIC_ATOMICREFCOUNTER_H_
20
21
#include <
decaf/util/concurrent/atomic/AtomicInteger.h
>
22
#include <algorithm>
23
24
namespace
decaf{
25
namespace
util{
26
namespace
concurrent{
27
namespace
atomic{
28
29
class
AtomicRefCounter
{
30
private
:
31
32
decaf::util::concurrent::atomic::AtomicInteger
* counter;
33
34
private
:
35
36
AtomicRefCounter
& operator= (
const
AtomicRefCounter
& );
37
38
public
:
39
40
AtomicRefCounter
() :
41
counter( new decaf::util::concurrent::atomic::
AtomicInteger
( 1 ) ) {}
42
AtomicRefCounter
(
const
AtomicRefCounter
& other ) : counter( other.counter ) {
43
this->counter->
incrementAndGet
();
44
}
45
46
virtual
~AtomicRefCounter
() {}
47
48
protected
:
49
57
void
swap
(
AtomicRefCounter
& other ) {
58
std::swap
( this->counter, other.counter );
59
}
60
68
bool
release
() {
69
if
( this->counter->
decrementAndGet
() == 0 ) {
70
delete
this->counter;
71
return
true
;
72
}
73
return
false
;
74
}
75
};
76
77
}}}}
78
79
#endif
/* _DECAF_UTIL_CONCURRENT_ATOMIC_ATOMICREFCOUNTER_H_ */
src
main
decaf
util
concurrent
atomic
AtomicRefCounter.h
Generated on Mon Mar 4 2013 10:25:46 for activemq-cpp-3.6.0 by
1.8.1.2