MADARA
3.1.8
|
This class stores an integer within a variable context. More...
#include <Barrier.h>
Public Types | |
typedef knowledge::KnowledgeRecord::Integer | type |
trait that describes the value type More... | |
Public Member Functions | |
Barrier (const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings()) | |
Default constructor. More... | |
Barrier (const std::string &name, KnowledgeBase &knowledge, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings()) | |
Constructor. More... | |
Barrier (const std::string &name, Variables &knowledge, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings()) | |
Constructor. More... | |
Barrier (const std::string &name, KnowledgeBase &knowledge, int id, int participants, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings()) | |
Default constructor. More... | |
Barrier (const std::string &name, Variables &knowledge, int id, int participants, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings()) | |
Default constructor. More... | |
Barrier (const Barrier &rhs) | |
Copy constructor. More... | |
~Barrier () | |
Destructor. More... | |
virtual BaseContainer * | clone (void) const |
Clones this container. More... | |
std::string | get_debug_info (void) |
Returns the type of the container along with name and any other useful information. More... | |
size_t | get_id (void) const |
Returns the id of the barrier in the barrier ring. More... | |
std::string | get_name (void) const |
Returns the name of the container. More... | |
size_t | get_participants (void) const |
Returns the number of participants in the barrier ring. More... | |
type | get_round (void) const |
Returns the current barrier round. More... | |
KnowledgeUpdateSettings | get_settings (void) |
Gets the update settings for the container. More... | |
bool | is_done (void) |
Wait for all other participants to reach your barrier round. More... | |
bool | is_false (void) const |
Determines if the barrier is false. More... | |
bool | is_true (void) const |
Determines if the barrier is true. More... | |
void | modify (void) |
Mark the value as modified. More... | |
virtual bool | modify_if_false (BaseContainer &conditional) |
Modifies the container if the argument is false. More... | |
virtual bool | modify_if_true (BaseContainer &conditional) |
Modifies the container if the argument is true. More... | |
void | next (void) |
Goes to the next barrier round. More... | |
bool | operator!= (const Barrier &value) const |
Checks for inequality. More... | |
void | operator= (const Barrier &rhs) |
Assignment operator. More... | |
type | operator= (type value) |
Sets the value of the variable. More... | |
bool | operator== (const Barrier &value) const |
Checks for equality. More... | |
void | resize (size_t id=0, size_t participants=1) |
Resizes the barrier, usually when number of participants change. More... | |
void | set (type value) |
Sets the barrier to a specific round. More... | |
void | set_name (const std::string &var_name, KnowledgeBase &knowledge, int id, int participants) |
Sets the variable name that this refers to. More... | |
void | set_name (const std::string &var_name, Variables &knowledge, int id, int participants) |
Sets the variable name that this refers to. More... | |
void | set_name (const std::string &var_name, ThreadSafeContext &knowledge, int id, int participants) |
Sets the variable name that this refers to. More... | |
void | set_quality (uint32_t quality, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false)) |
Sets the quality of writing to the barrier variables. More... | |
void | set_settings (const KnowledgeUpdateSettings &settings) |
Sets the update settings for the container. More... | |
double | to_double (void) const |
Returns the barrier round number as a double. More... | |
knowledge::KnowledgeRecord::Integer | to_integer (void) const |
Returns the barrier round number as an integer (same as *) More... | |
knowledge::KnowledgeRecord | to_record (void) const |
Returns the barrier round number as a knowledge::KnowledgeRecord. More... | |
std::string | to_string (void) const |
Returns the barrier round number as a string. More... | |
Protected Attributes | |
MADARA_LOCK_TYPE | mutex_ |
guard for access and changes More... | |
std::string | name_ |
Prefix of variable. More... | |
KnowledgeUpdateSettings | settings_ |
Settings for modifications. More... | |
Private Member Functions | |
type | barrier_result (void) const |
Checks if current barrier is successful. More... | |
void | build_aggregate_barrier (void) |
Builds the aggregate barrier logic. More... | |
void | build_var (void) |
Builds the variable that is actually incremented. More... | |
virtual std::string | get_debug_info_ (void) |
Returns the type of the container along with name and any other useful information. More... | |
void | init_noharm (void) |
Initialize the no harm eval settings. More... | |
virtual bool | is_false_ (void) const |
Polymorphic is false method which can be used to determine if at least one value in the container is false. More... | |
virtual bool | is_true_ (void) const |
Polymorphic is true method which can be used to determine if all values in the container are true. More... | |
virtual void | modify_ (void) |
Polymorphic modify method used by collection containers. More... | |
Private Attributes | |
CompiledExpression | aggregate_barrier_ |
Expression for aggregating barrier in one atomic operation. More... | |
ThreadSafeContext * | context_ |
Variable context that we are modifying. More... | |
size_t | id_ |
id of this barrier in the barrier ring More... | |
EvalSettings | no_harm |
Settings we'll use for all evaluations. More... | |
size_t | participants_ |
the number of participants in the barrier ring More... | |
VariableReference | variable_ |
Variable reference. More... | |
std::string | variable_name_ |
Holder for variable name to quickly refresh modified status. More... | |
madara::knowledge::containers::Barrier::Barrier | ( | const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings () | ) |
Default constructor.
Definition at line 9 of file Barrier.cpp.
madara::knowledge::containers::Barrier::Barrier | ( | const std::string & | name, |
KnowledgeBase & | knowledge, | ||
const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings () |
||
) |
Constructor.
name | name of the integer in the knowledge base |
knowledge | the knowledge base that will contain the vector |
settings | settings for evaluating the vector |
Definition at line 16 of file Barrier.cpp.
madara::knowledge::containers::Barrier::Barrier | ( | const std::string & | name, |
Variables & | knowledge, | ||
const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings () |
||
) |
Constructor.
name | the name of the map within the variable context |
knowledge | the variable context |
settings | settings to apply by default |
Definition at line 28 of file Barrier.cpp.
madara::knowledge::containers::Barrier::Barrier | ( | const std::string & | name, |
KnowledgeBase & | knowledge, | ||
int | id, | ||
int | participants, | ||
const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings () |
||
) |
Default constructor.
name | name of the integer in the knowledge base |
knowledge | the knowledge base that will contain the vector |
id | the id of the barrier in the barrier ring |
participants | the number of participants in the barrier ring |
settings | settings for evaluating the vector |
Definition at line 40 of file Barrier.cpp.
madara::knowledge::containers::Barrier::Barrier | ( | const std::string & | name, |
Variables & | knowledge, | ||
int | id, | ||
int | participants, | ||
const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings () |
||
) |
Default constructor.
name | name of the integer in the knowledge base |
knowledge | the knowledge base that will contain the vector |
id | the id of the barrier in the barrier ring |
participants | the number of participants in the barrier ring |
settings | settings for evaluating the vector |
Definition at line 54 of file Barrier.cpp.
madara::knowledge::containers::Barrier::Barrier | ( | const Barrier & | rhs | ) |
Copy constructor.
Definition at line 69 of file Barrier.cpp.
madara::knowledge::containers::Barrier::~Barrier | ( | ) |
Destructor.
Definition at line 81 of file Barrier.cpp.
|
inlineprivate |
|
private |
Builds the aggregate barrier logic.
Definition at line 105 of file Barrier.cpp.
|
private |
Builds the variable that is actually incremented.
Definition at line 154 of file Barrier.cpp.
|
virtual |
Clones this container.
Implements madara::knowledge::containers::BaseContainer.
Definition at line 445 of file Barrier.cpp.
std::string madara::knowledge::containers::Barrier::get_debug_info | ( | void | ) |
Returns the type of the container along with name and any other useful information.
The provided information should be useful for developers wishing to debug container operations, especially as it pertains to pending network operations (i.e., when used in conjunction with modify)
Definition at line 397 of file Barrier.cpp.
|
privatevirtual |
Returns the type of the container along with name and any other useful information.
The provided information should be useful for developers wishing to debug container operations, especially as it pertains to pending network operations (i.e., when used in conjunction with modify)
Implements madara::knowledge::containers::BaseContainer.
Definition at line 439 of file Barrier.cpp.
size_t madara::knowledge::containers::Barrier::get_id | ( | void | ) | const |
Returns the id of the barrier in the barrier ring.
Definition at line 197 of file Barrier.cpp.
|
inlineinherited |
Returns the name of the container.
Definition at line 5 of file BaseContainer.inl.
size_t madara::knowledge::containers::Barrier::get_participants | ( | void | ) | const |
Returns the number of participants in the barrier ring.
Definition at line 204 of file Barrier.cpp.
|
inline |
|
inherited |
Gets the update settings for the container.
Definition at line 37 of file BaseContainer.cpp.
|
private |
Initialize the no harm eval settings.
Definition at line 186 of file Barrier.cpp.
bool madara::knowledge::containers::Barrier::is_done | ( | void | ) |
Wait for all other participants to reach your barrier round.
Definition at line 345 of file Barrier.cpp.
bool madara::knowledge::containers::Barrier::is_false | ( | void | ) | const |
Determines if the barrier is false.
Definition at line 515 of file Barrier.cpp.
|
privatevirtual |
Polymorphic is false method which can be used to determine if at least one value in the container is false.
Implements madara::knowledge::containers::BaseContainer.
Definition at line 528 of file Barrier.cpp.
bool madara::knowledge::containers::Barrier::is_true | ( | void | ) | const |
Determines if the barrier is true.
Definition at line 494 of file Barrier.cpp.
|
privatevirtual |
Polymorphic is true method which can be used to determine if all values in the container are true.
Implements madara::knowledge::containers::BaseContainer.
Definition at line 522 of file Barrier.cpp.
void madara::knowledge::containers::Barrier::modify | ( | void | ) |
Mark the value as modified.
The barrier retains the same value but will resend its value as if it had been modified.
Definition at line 388 of file Barrier.cpp.
|
privatevirtual |
Polymorphic modify method used by collection containers.
This method calls the modify method for this class. We separate the faster version (modify) from this version (modify_) to allow users the opportunity to have a fastery version that does not use polymorphic functions (generally virtual functions are half as efficient as normal function calls)
Implements madara::knowledge::containers::BaseContainer.
Definition at line 433 of file Barrier.cpp.
|
virtualinherited |
Modifies the container if the argument is false.
conditional | the container that must be false to modify |
Definition at line 64 of file BaseContainer.cpp.
|
virtualinherited |
Modifies the container if the argument is true.
conditional | the container that must be true to modify |
Definition at line 44 of file BaseContainer.cpp.
void madara::knowledge::containers::Barrier::next | ( | void | ) |
Goes to the next barrier round.
Definition at line 334 of file Barrier.cpp.
bool madara::knowledge::containers::Barrier::operator!= | ( | const Barrier & | value | ) | const |
Checks for inequality.
value | the value to compare to |
void madara::knowledge::containers::Barrier::operator= | ( | const Barrier & | rhs | ) |
madara::knowledge::containers::Barrier::type madara::knowledge::containers::Barrier::operator= | ( | type | value | ) |
Sets the value of the variable.
value | the new value of the variable |
Definition at line 290 of file Barrier.cpp.
bool madara::knowledge::containers::Barrier::operator== | ( | const Barrier & | value | ) | const |
Checks for equality.
value | the value to compare to |
void madara::knowledge::containers::Barrier::resize | ( | size_t | id = 0 , |
size_t | participants = 1 |
||
) |
Resizes the barrier, usually when number of participants change.
id | the id of this barrier in the barrier ring |
participants | the number of participants in barrier ring |
Definition at line 274 of file Barrier.cpp.
void madara::knowledge::containers::Barrier::set | ( | type | value | ) |
Sets the barrier to a specific round.
Definition at line 379 of file Barrier.cpp.
void madara::knowledge::containers::Barrier::set_name | ( | const std::string & | var_name, |
KnowledgeBase & | knowledge, | ||
int | id, | ||
int | participants | ||
) |
Sets the variable name that this refers to.
var_name | the name of the variable in the knowledge base |
knowledge | the knowledge base the variable is housed in |
id | the id of the barrier in the barrier ring |
participants | the number of participants in the barrier ring |
Definition at line 211 of file Barrier.cpp.
void madara::knowledge::containers::Barrier::set_name | ( | const std::string & | var_name, |
Variables & | knowledge, | ||
int | id, | ||
int | participants | ||
) |
Sets the variable name that this refers to.
var_name | the name of the variable in the knowledge base |
knowledge | the knowledge base the variable is housed in |
id | the id of the barrier in the barrier ring |
participants | the number of participants in the barrier ring |
Definition at line 232 of file Barrier.cpp.
void madara::knowledge::containers::Barrier::set_name | ( | const std::string & | var_name, |
ThreadSafeContext & | knowledge, | ||
int | id, | ||
int | participants | ||
) |
Sets the variable name that this refers to.
var_name | the name of the variable in the knowledge base |
knowledge | the knowledge base the variable is housed in |
id | the id of the barrier in the barrier ring |
participants | the number of participants in the barrier ring |
Definition at line 253 of file Barrier.cpp.
void madara::knowledge::containers::Barrier::set_quality | ( | uint32_t | quality, |
const KnowledgeReferenceSettings & | settings = KnowledgeReferenceSettings (false) |
||
) |
Sets the quality of writing to the barrier variables.
quality | quality of writing to this location |
settings | settings for referring to knowledge variables |
Definition at line 481 of file Barrier.cpp.
|
inherited |
Sets the update settings for the container.
settings | the new settings to use |
Definition at line 28 of file BaseContainer.cpp.
double madara::knowledge::containers::Barrier::to_double | ( | void | ) | const |
Returns the barrier round number as a double.
Definition at line 451 of file Barrier.cpp.
madara::knowledge::KnowledgeRecord::Integer madara::knowledge::containers::Barrier::to_integer | ( | void | ) | const |
Returns the barrier round number as an integer (same as *)
Definition at line 318 of file Barrier.cpp.
madara::knowledge::KnowledgeRecord madara::knowledge::containers::Barrier::to_record | ( | void | ) | const |
Returns the barrier round number as a knowledge::KnowledgeRecord.
This is useful for referencing clock and other record info.
Definition at line 303 of file Barrier.cpp.
std::string madara::knowledge::containers::Barrier::to_string | ( | void | ) | const |
Returns the barrier round number as a string.
Definition at line 466 of file Barrier.cpp.
|
private |
|
mutableprivate |
|
private |
|
mutableprotectedinherited |
guard for access and changes
Mutex for local changes
Definition at line 141 of file BaseContainer.h.
|
protectedinherited |
Prefix of variable.
Definition at line 151 of file BaseContainer.h.
|
private |
|
private |
|
protectedinherited |
Settings for modifications.
Definition at line 156 of file BaseContainer.h.
|
private |
|
private |