Oracle® Fusion Middleware C++ API Reference for Oracle Coherence
12c (12.2.1.3.0)

E80355-01

AtomicCounter Class Reference

#include <coherence/util/AtomicCounter.hpp>

Inherits Object.

List of all members.


Detailed Description

AtomicCounter allows for atomic updates to a "int64_t" value where possible without requiring synchronization.

Author:
nsa 12.28.2007

Public Types

typedef spec::Handle Handle
 AtomicCounter Handle definition.
typedef spec::View View
 AtomicCounter View definition.
typedef spec::Holder Holder
 AtomicCounter Holder definition.

Public Member Functions

virtual int64_t increment (int64_t c=1)
 Incremenet the value by c, and return the new value.
virtual int64_t postIncrement (int64_t c=1)
 Incremenet the value by c, and return the original value.
virtual int64_t decrement (int64_t c=1)
 Decrement the value by c, and return the new value.
virtual int64_t postDecrement (int64_t c=1)
 Decrement the value by c, and return the original value.
virtual int64_t getCount () const
 Return the current value of the counter.
virtual int64_t update (int64_t cAssume, int64_t cNew)
 Update the current value, only if it is equal to the assumed value.
virtual int64_t setCount (int64_t cNew)
 Update the current value, and return the previous value.
virtual TypedHandle
< const String
toString () const
 Output a human-readable description of this Object to the given stream.

Note that when overriding this method the return type must be TypedHandle<const String> rather then String::View. These two types are assignment compatible but not equivalent and declaring the override with String::View will not be a compatible override.

coherence::lang::operator<<(std::ostream, Object::View) is defined and will call into the toString method, to output Objects. If a managed String object is desired, the COH_TO_STRING macro can be used to build up a String from streamable contents and is generally how toString() will be implemented.

 Object::View vKey   = ...
 Object::View vValue = ...
 std::cout << vKey << " = " << vValue << std::endl;

 String::View vs = COH_TO_STRING(vKey << " = " << vValue);

The COH_TO_STRING macro is also the most common way to implement the toString method. For example:

 virtual TypedHandle<const String> Person::toString() const
     {
     return COH_TO_STRING("Name: " << f_sName << " SSN: " << f_nSSN);
     }

Returns:
a string representation of this object


Protected Member Functions

 AtomicCounter (int64_t cValue=0)
 Create an AtomicCounter initialized with a specified value.
 AtomicCounter (const AtomicCounter &that)
 Copy constructor.

Protected Attributes

NativeAtomic64 m_atomic
 The underlying native implementation.

Constructor & Destructor Documentation

AtomicCounter ( int64_t  cValue = 0  )  [protected]

Create an AtomicCounter initialized with a specified value.

Parameters:
cValue the initial value of the Atomic64


Member Function Documentation

virtual int64_t increment ( int64_t  c = 1  )  [virtual]

Incremenet the value by c, and return the new value.

Parameters:
c the amount to increment the counter by
Returns:
the new value

virtual int64_t postIncrement ( int64_t  c = 1  )  [virtual]

Incremenet the value by c, and return the original value.

Parameters:
c the amount to increment the counter by
Returns:
the original value

virtual int64_t decrement ( int64_t  c = 1  )  [virtual]

Decrement the value by c, and return the new value.

Parameters:
c the amount to decrement the counter by
Returns:
the new value

virtual int64_t postDecrement ( int64_t  c = 1  )  [virtual]

Decrement the value by c, and return the original value.

Parameters:
c the amount to decrement the counter by
Returns:
the original value

virtual int64_t getCount (  )  const [virtual]

Return the current value of the counter.

Returns:
the current value

virtual int64_t update ( int64_t  cAssume,
int64_t  cNew 
) [virtual]

Update the current value, only if it is equal to the assumed value.

Parameters:
cAssume the assumed old value
cNew the new value
Returns:
the prior actual value, if the returned value does is not equal to the supplied assumed value then update did not take place

virtual int64_t setCount ( int64_t  cNew  )  [virtual]

Update the current value, and return the previous value.

Parameters:
cNew the new value
Returns:
the previous value just before the update went through


The documentation for this class was generated from the following file:
Copyright © 2000, 2017, Oracle and/or its affiliates. All rights reserved.