SOLA
|
Classes | |
struct | AccessContainer |
class | AlgorithmException |
class | AlgorithmInterface |
struct | AlgorithmTypesContainer |
class | AndExpression |
class | AtomicBooleanExpression |
class | BooleanExpression |
class | BootstrapAlgorithmGeneral |
class | BootstrapAlgorithmInterface |
class | ConfigNode |
struct | ConnectionInfo |
class | DistributedData |
class | DSNHandler |
class | EmptyExpression |
class | EntitySearchAlgorithmInterface |
class | FindQuery |
class | FindQueryParser |
class | FiniteStateMachine |
class | FSMException |
class | FuzzyValue |
class | InvalidMessageException |
class | ISerializer |
class | JoinAlgorithmGeneral |
class | JoinAlgorithmInterface |
struct | JoinInfo |
class | LeaveAlgorithmGeneral |
class | LeaveAlgorithmInterface |
class | LocalData |
class | Logger |
struct | LoggerInfoAddContent |
struct | LoggerInfoAddEvent |
struct | LoggerInfoAddFindQuery |
struct | LoggerInfoAddFindQueryResult |
struct | LoggerInfoAddNeighbor |
struct | LoggerInfoAddNode |
struct | LoggerInfoNodeState |
struct | LoggerInfoSearchExact |
class | LoggerInterface |
struct | LoggerPhysicalNodeInfo |
class | LogicalNodeInfo |
struct | LogicalNodeInfoHasher |
class | LogicContainer |
class | MessageAttributeInquiryAnswer |
| |
class | MessageAttributeInquiryRequest |
| |
class | MessageBootstrapDiscover |
| |
class | MessageBootstrapResponse |
| |
class | MessageEmpty |
| |
class | MessageFindQueryAnswer |
| |
class | MessageFindQueryRequest |
| |
class | MessageFindReplacement |
| |
class | MessageGetNeighbors |
| |
class | MessageInformAboutNeighbors |
| |
class | MessageJoin |
| |
class | MessageJoinAccept |
| |
class | MessageJoinAcceptAck |
| |
class | MessageLockNeighborRequest |
| |
class | MessageLockNeighborResponse |
| |
class | MessageRemoveAndUpdateNeighbors |
| |
class | MessageRemoveNeighbor |
| |
class | MessageRemoveNeighborAck |
| |
class | MessageReplacementAck |
| |
class | MessageReplacementNack |
| |
class | MessageReplacementOffer |
| |
class | MessageReplacementUpdate |
| |
class | MessageSearchExact |
| |
class | MessageSearchExactFailure |
| |
class | MessageSignoffParentAnswer |
| |
class | MessageSignoffParentRequest |
| |
class | MessageSubscriptionOrder |
| |
class | MessageSubscriptionUpdate |
| |
class | MessageUnlockNeighbor |
| |
class | MessageUpdateNeighbors |
| |
class | Minhton |
class | MinhtonEntitySearchAlgorithm |
class | MinhtonFindEndAlgorithm |
class | MinhtonJoinAlgorithm |
class | MinhtonLeaveAlgorithm |
class | MinhtonLoggerNs3 |
class | MinhtonMessage |
class | MinhtonMessageHeader |
class | MinhtonNode |
class | MinhtonSearchExactAlgorithm |
class | NetworkFacade |
class | NodeData |
class | NodeInfo |
struct | NodeInfoHasher |
class | NotExpression |
class | NumericComparisonExpression |
class | OrExpression |
struct | Overload |
Definition of a helper struct used for visiting variant types. More... | |
class | PhysicalNodeInfo |
struct | PhysicalNodeInfoHasher |
class | PresenceExpression |
class | ProcedureInfo |
struct | ReceiveMessage |
class | ResponseAlgorithmGeneral |
class | ResponseAlgorithmInterface |
class | RoutingInformation |
class | SearchExactAlgorithmGeneral |
class | SearchExactAlgorithmInterface |
struct | SendMessage |
struct | Signal |
class | StringEqualityExpression |
struct | Timeout |
struct | TimeoutLengthsContainer |
Enumerations | |
enum class | ComparisonTypes { kEqualTo , kNotEqualTo , kLessThan , kGreater , kLessThanOrEqualTo , kGreaterThanOrEqualTo } |
enum class | SearchExactTestEntryTypes : uint8_t { kStart = 0 , kHop = 1 , kSuccess = 2 , kFailure = 3 } |
enum class | MessageProcessingModes : uint8_t { kReceiving = 0 , kSending = 1 } |
enum class | NeighborRelationship : uint8_t { kParent = 0 , kChild = 1 , kAdjacentLeft = 2 , kAdjacentRight = 3 , kRoutingTableNeighbor = 4 , kRoutingTableNeighborChild = 5 , kUnknownRelationship = 6 } |
enum class | EventType : uint8_t { kJoinEvent = 0 , kLeaveEvent = 1 , kFindQueryEvent = 3 , kRequestCountdownStart = 4 } |
enum class | ContentStatus : uint8_t { kContentInsertUpdate = 0 , kContentRemove = 1 } |
enum class | SignalType : uint8_t { kJoinNetwork = 0 , kLeaveNetwork = 1 , kCleanupSignal = 2 } |
enum class | TimeoutType : uint8_t { kBootstrapResponseTimeout = 0 , kJoinAcceptResponseTimeout = 1 , kJoinAcceptAckResponseTimeout = 2 , kReplacementAckResponseTimeout = 3 , kReplacementOfferResponseTimeout = 4 , kDsnAggregationTimeout = 5 , kInquiryAggregationTimeout = 6 , kSelfDepartureRetry = 7 , kJoinRetry = 8 } |
enum | FSMState : int { kIdle , kWaitForBootstrapResponse , kWaitForJoinAccept , kConnected , kConnectedAcceptingChild , kConnectedReplacing , kWaitForReplacementOffer , kErrorState , kConnectedWaitingParentResponse , kSignOffFromInlevelNeighbors , kConnectedWaitingParentResponseDirectLeaveWoReplacement , kSignOffFromInlevelNeighborsDirectLeaveWoReplacement , kJoinFailed } |
enum class | JoinAlgorithms { kJoinMinhton } |
enum class | LeaveAlgorithms { kLeaveMinhton } |
enum class | SearchExactAlgorithms { kSearchExactMinhton } |
enum class | ResponseAlgorithms { kResponseGeneral } |
enum class | BootstrapAlgorithms { kBootstrapGeneral } |
enum class | State { kStarted , kConnected , kIdle , kError } |
enum class | NodeStatus : uint8_t { kUninit = 0 , kRunning = 1 , kLeft = 2 , kFailed = 3 } |
enum class | AlgorithmType : uint8_t { kUndefinedAlgorithm = 0 , kJoinAlgorithm = 1 , kLeaveAlgorithm = 2 , kUpdatingAlgorithm = 4 } |
enum class | LogLevel { kDebug , kInfo , kWarning , kCritical } |
enum | SearchProgress { kSearchRight , kSearchLeft , kNone , kCheckRight , kReplacementNode } |
Used by the minhton join & leave algorithm to save the progress of the position finding. | |
enum class | MessageType : uint32_t { kInit = 0 , kJoin = 10 , kJoinAccept = 12 , kJoinAcceptAck = 14 , kFindQueryRequest = 20 , kFindQueryAnswer = 22 , kAttributeInquiryRequest = 24 , kAttributeInquiryAnswer = 26 , kSubscriptionOrder = 28 , kSubscriptionUpdate = 30 , kSearchExact = 40 , kSearchExactFailure = 41 , kEmpty = 42 , kBootstrapDiscover = 50 , kBootstrapResponse = 52 , kRemoveNeighbor = 60 , kRemoveNeighborAck = 62 , kUpdateNeighbors = 64 , kReplacementUpdate = 66 , kGetNeighbors = 70 , kInformAboutNeighbors = 72 , kFindReplacement = 80 , kReplacementNack = 81 , kSignOffParentRequest = 82 , kLockNeighborRequest = 84 , kLockNeighborResponse = 86 , kSignOffParentAnswer = 88 , kRemoveAndUpdateNeighbor = 90 , kReplacementOffer = 92 , kReplacementAck = 94 , kUnlockNeighbor = 96 } |
enum class | ProcedureKey : uint8_t { kBootstrapProcess , kJoinProcedure , kLeaveProcedure , kAcceptChildProcedure , kFindReplacementProcedure , kEntitySearchUndecidedNodeInquiries } |
Functions | |
uint64_t | getCurrentTime () |
bool | getFillLevelRightToLeft (uint32_t level) |
bool | isNodePartOfPrioSet (uint32_t level, uint32_t number, uint16_t fanout) |
std::tuple< uint32_t, uint32_t > | calcParent (uint32_t level, uint32_t number, uint16_t fanout) |
std::vector< std::tuple< uint32_t, uint32_t > > | calcChildren (uint32_t level, uint32_t number, uint16_t fanout) |
std::vector< uint32_t > | calcRoutingSequence (uint32_t level, uint16_t fanout) |
std::vector< std::tuple< uint32_t, uint32_t > > | calcLeftRT (uint32_t level, uint32_t number, uint16_t fanout) |
std::vector< std::tuple< uint32_t, uint32_t > > | calcRightRT (uint32_t level, uint32_t number, uint16_t fanout) |
std::set< uint32_t > | calcPrioSet (uint32_t level, uint16_t fanout) |
returns an ordered set | |
bool | isPositionValid (uint32_t level, uint32_t number, uint16_t fanout) |
bool | isFanoutValid (uint16_t fanout) |
double | treeMapper (uint32_t level, uint32_t number, uint16_t fanout, double K) |
std::tuple< double, double, double > | treeMapperInternal (uint32_t level, uint32_t number, uint16_t fanout, uint8_t K) |
std::tuple< uint32_t, uint32_t > | getCoveringDSN (uint32_t level, uint32_t number, uint16_t fanout) |
std::vector< std::tuple< uint32_t, uint32_t > > | getCoverArea (uint32_t level, uint32_t number, uint16_t fanout) |
std::vector< uint32_t > | getDSNSet (uint32_t level, uint16_t fanout) |
std::string | getMessageTypeString (MessageType type) |
template<class... Ts> | |
Overload (Ts...) -> Overload< Ts... > | |
Explicit deduction guide for the Overload template. | |
bool | operator== (const minhton::LogicalNodeInfo &p1, const minhton::LogicalNodeInfo &p2) |
bool | operator!= (const minhton::LogicalNodeInfo &p1, const minhton::LogicalNodeInfo &p2) |
bool | operator< (const minhton::LogicalNodeInfo &p1, const minhton::LogicalNodeInfo &p2) |
bool | operator<= (const minhton::LogicalNodeInfo &p1, const minhton::LogicalNodeInfo &p2) |
bool | operator> (const minhton::LogicalNodeInfo &p1, const minhton::LogicalNodeInfo &p2) |
bool | operator>= (const minhton::LogicalNodeInfo &p1, const minhton::LogicalNodeInfo &p2) |
bool | operator== (const minhton::NodeInfo &n1, const minhton::NodeInfo &n2) |
bool | operator!= (const minhton::NodeInfo &n1, const minhton::NodeInfo &n2) |
bool | operator< (const minhton::NodeInfo &n1, const minhton::NodeInfo &n2) |
bool | operator<= (const minhton::NodeInfo &n1, const minhton::NodeInfo &n2) |
bool | operator> (const minhton::NodeInfo &n1, const minhton::NodeInfo &n2) |
bool | operator>= (const minhton::NodeInfo &n1, const minhton::NodeInfo &n2) |
bool | operator== (const minhton::PhysicalNodeInfo &n1, const minhton::PhysicalNodeInfo &n2) |
bool | operator!= (const minhton::PhysicalNodeInfo &n1, const minhton::PhysicalNodeInfo &n2) |
bool | operator< (const minhton::PhysicalNodeInfo &n1, const minhton::PhysicalNodeInfo &n2) |
bool | operator<= (const minhton::PhysicalNodeInfo &n1, const minhton::PhysicalNodeInfo &n2) |
bool | operator> (const minhton::PhysicalNodeInfo &n1, const minhton::PhysicalNodeInfo &n2) |
bool | operator>= (const minhton::PhysicalNodeInfo &n1, const minhton::PhysicalNodeInfo &n2) |
Global definition of constants that are used in many different files
|
strong |
there are various types of the messages for MinhtonNode. For further details for about the messages, check the corresponding message headers
std::vector< std::tuple< uint32_t, uint32_t > > minhton::calcChildren | ( | uint32_t | level, |
uint32_t | number, | ||
uint16_t | fanout | ||
) |
Gets an ordered list (vector) of tuples with the level and number of children of a specific node, by providing the level, number and fanout.
Typical usage:
level | The level of a node |
number | The number of a node |
fanout | The fanout the network is working with |
std::vector< std::tuple< uint32_t, uint32_t > > minhton::calcLeftRT | ( | uint32_t | level, |
uint32_t | number, | ||
uint16_t | fanout | ||
) |
Get the left routing table for a specifc node by providing the level, number and fanout. This will give you an ordered list (vector) of tuples, which describe the routing table neighbors
Typical usage:
level | The level of a node |
number | The number of a node |
fanout | The fanout the network is working with |
std::tuple< uint32_t, uint32_t > minhton::calcParent | ( | uint32_t | level, |
uint32_t | number, | ||
uint16_t | fanout | ||
) |
Retrieve the parent-node of a node via level, number and fanout
Typical usage:
level | The level of a node |
number | The number of a node |
fanout | The fanout the network is working with |
std::set< uint32_t > minhton::calcPrioSet | ( | uint32_t | level, |
uint16_t | fanout | ||
) |
returns an ordered set
Calculates the numbers of the prio nodes, with a given level and fanout.
This method implements the formula described in the nBATON* paper.
Typical usage:
level | |
fanout |
std::vector< std::tuple< uint32_t, uint32_t > > minhton::calcRightRT | ( | uint32_t | level, |
uint32_t | number, | ||
uint16_t | fanout | ||
) |
Get the right routing table for a specifc node by providing the level, number and fanout. This will give you an ordered list (vector) of tuples, which describe the routing table neighbors
Typical usage:
level | The level of a node |
number | The number of a node |
fanout | The fanout the network is working with |
std::vector< uint32_t > minhton::calcRoutingSequence | ( | uint32_t | level, |
uint16_t | fanout | ||
) |
Here we return a sequence of distances between node entries for the routing tables. More specific: We return for fanout 2 the sequence: 1, 2, 4, 8, ... This vector can be then used to calculate, depending on the nodes position, the actual number of a node in the routing table. The level is used to make a sufficient large sequence whereby the fanout describes the gaps between the numbers.
Typical usage:
level | The level to get a large enough sequence |
fanout | The fanout which describe the gaps inside the sequence |
bool minhton::getFillLevelRightToLeft | ( | uint32_t | level | ) |
This gets the Sweep Direction, which is needed for the sophisticated join procedure. Depending on the level a bool is returned, true if the level is being filled from right to left.
Typical usage:
level | The level, where you want to know the sweep direction. |
bool minhton::isFanoutValid | ( | uint16_t | fanout | ) |
bool minhton::isNodePartOfPrioSet | ( | uint32_t | level, |
uint32_t | number, | ||
uint16_t | fanout | ||
) |
Enter the Level, Number and fanout of a node, to check, whether this node is a PrioNode (-> a node handling the routing for the sophisticated join).
Typical usage:
level | The level of a node |
number | The number of a node |
fanout | The fanout the network is working with |
bool minhton::isPositionValid | ( | uint32_t | level, |
uint32_t | number, | ||
uint16_t | fanout | ||
) |
bool minhton::operator!= | ( | const minhton::PhysicalNodeInfo & | n1, |
const minhton::PhysicalNodeInfo & | n2 | ||
) |
bool minhton::operator< | ( | const minhton::PhysicalNodeInfo & | n1, |
const minhton::PhysicalNodeInfo & | n2 | ||
) |
bool minhton::operator<= | ( | const minhton::PhysicalNodeInfo & | n1, |
const minhton::PhysicalNodeInfo & | n2 | ||
) |
bool minhton::operator== | ( | const minhton::PhysicalNodeInfo & | n1, |
const minhton::PhysicalNodeInfo & | n2 | ||
) |
bool minhton::operator> | ( | const minhton::PhysicalNodeInfo & | n1, |
const minhton::PhysicalNodeInfo & | n2 | ||
) |
bool minhton::operator>= | ( | const minhton::PhysicalNodeInfo & | n1, |
const minhton::PhysicalNodeInfo & | n2 | ||
) |
double minhton::treeMapper | ( | uint32_t | level, |
uint32_t | number, | ||
uint16_t | fanout, | ||
double | K | ||
) |
With this method we can recursively calculate the relative horizontal value of each node, given its position in the tree, and the fanout of the network.
The constant K has to be the same in the different use-cases to for comparibility of the relative horizontal values.
Typical usage:
level | |
number | |
fanout | |
K | an arbitrary constant which has to be the same |
std::tuple< double, double, double > minhton::treeMapperInternal | ( | uint32_t | level, |
uint32_t | number, | ||
uint16_t | fanout, | ||
uint8_t | K | ||
) |
Method internally used by the treeMapper to additionally pass lower and upper bounds. Only the center is used in the outer treeMapper method.