Files
scandocs/uni/masterarbeit/source/moversight/split/SplitOptions.cc
2014-06-30 13:58:10 +02:00

122 lines
3.0 KiB
C++

/*
* File: SplitOptions.cc
* Author: jgaebler
*
* Created on November 14, 2011, 6:37 PM
*/
#include "SplitOptions.h"
namespace ubeeme {
namespace moversight {
/**
* @brief Defines the shifts for the option parameter within the SPA message.
*/
enum ShiftTypes {
SHIFT_SEMANTIC = 0x7, //0b00000111,
SHIFT_FLUSH = 0x6, //0b00000110,
SHIFT_REPLY = 0x5 //0b00000101
};
/**
* @brief Defines the test bit for each synchronisation
*/
enum SyncTypes {
FLUSH = 0x1, //0b00000001,
SEMANTIC = 0x1, //0b00000001
};
/**
* @brief Defines the bit masks for the reply parameter within the SPA message.
*/
enum ReplyTypes {
REPLY_ALL = 0x1, //0b00000001
};
/**
* @brief Constructor
*/
SplitOptions::SplitOptions(){
options = '\0';
}
/**
* @brief Constructor
* @param o The options to store as bit pattern.
*/
SplitOptions::SplitOptions(unsigned char o) {
options = o;
}
/**
* @brief Destructor
*/
SplitOptions::~SplitOptions() {
}
/**
* @brief Check if a semantic synchronisation shall start.
* @param options The options where the semantic flag is set. Get by bit shifting.
* @return True if the semantic flag is set in options otherwise false.
*/
bool
SplitOptions::isSemanticValidation() const {
unsigned char semantic = options >> SHIFT_SEMANTIC;
if ((semantic & SEMANTIC) == SEMANTIC) {
return true;
}// End if
return false;
}
/**
* @brief Check if a flush synchronisation shall start.
* @param options The options where the flush flag is set. Get by bit shifting.
* @return True if the flush flag is set in options otherwise false.
*/
bool
SplitOptions::isFlushSynchronisation() const {
unsigned char flush = options >> SHIFT_FLUSH;
if ((flush & FLUSH) == FLUSH) {
return true;
}// End if
return false;
}
/**
* @brief Check if the reply all option is set.
* @return True, should each peer response, which should be segregated, false otherwhise.
*/
bool
SplitOptions::isReplyAll() const {
unsigned char reply = options >> SHIFT_REPLY;
if ((reply && REPLY_ALL) == REPLY_ALL ) {
return true;
}
return false;
}
/**
* @brief Permits access to the raw option bit sequence.
* @return The options as bit sequence.
*/
unsigned char
SplitOptions::getRaw() const {
return options;
}
}
}