122 lines
3.0 KiB
C++
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|