#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
Go to the source code of this file.
Data Structures | |
struct | node |
A node in a btree maintaining min delay history. More... | |
struct | tree |
A btree maitaining min delay history in an AVL balancing algorithmic fashion. More... | |
Defines | |
#define | NODE_BALANCE(NODE) (NODE_HEIGHT(NODE->right) - NODE_HEIGHT(NODE->left)) |
#define | NODE_HEIGHT(NODE) (NODE == NULL ? 0 : NODE->height) |
#define | NODE_RECOMPUTE_HEIGHT(NODE) |
#define | VALUE_EXPIRED(tv_old, tv_new, tv_window) |
Typedefs | |
typedef node | node_t |
A node in a btree maintaining min delay history. | |
typedef tree | tree_t |
A btree maitaining min delay history in an AVL balancing algorithmic fashion. | |
Functions | |
void | Tree_Init (tree_t *tree, struct timeval window) |
void | Tree_Insert (tree_t *tree, int32_t val, struct timeval stamp) |
int32_t | Tree_Max (tree_t *tree, struct timeval stamp) |
int32_t | Tree_Min (tree_t *tree, struct timeval stamp) |
void | Tree_Print (tree_t *tree) |
void | Tree_Set_Window (tree_t *tree, struct timeval window) |
Definition in file vfer_btree_delay.h.
#define NODE_BALANCE | ( | NODE | ) | (NODE_HEIGHT(NODE->right) - NODE_HEIGHT(NODE->left)) |
Definition at line 87 of file vfer_btree_delay.h.
#define NODE_HEIGHT | ( | NODE | ) | (NODE == NULL ? 0 : NODE->height) |
Definition at line 90 of file vfer_btree_delay.h.
#define NODE_RECOMPUTE_HEIGHT | ( | NODE | ) |
Value:
{ \ NODE->height = ((NODE_HEIGHT(NODE->left) > NODE_HEIGHT(NODE->right)) ? NODE_HEIGHT(NODE->left) : NODE_HEIGHT(NODE->right)) + 1; }
Definition at line 93 of file vfer_btree_delay.h.
#define VALUE_EXPIRED | ( | tv_old, | |||
tv_new, | |||||
tv_window | ) |
Value:
( \ ((tv_old.tv_sec + tv_window.tv_sec) < tv_new.tv_sec) || \ (((tv_old.tv_sec + tv_window.tv_sec) == tv_new.tv_sec) && \ ((tv_old.tv_usec + tv_window.tv_usec) < tv_new.tv_usec)))
Definition at line 80 of file vfer_btree_delay.h.
A node in a btree maintaining min delay history.
A node in a tree maintains a time stamp which determines how fresh the value is, an index for the tree->nodes array (see optimization above), left,right,parent pointers, and a height which is dynamically maintained
A btree maitaining min delay history in an AVL balancing algorithmic fashion.
a tree has a root pointer, a nodes array (see optimization above), a nodes_free counter and free_nodes array (also for optimization) and a window which determines the freshness of data values in the tree (ie. when to expire them)
void Tree_Init | ( | tree_t * | tree, | |
struct timeval | window | |||
) |
Initializes the tree with a specific delay window size
tree | binary delay tree structure pointer | |
window | window size to initiailize the tree with |
Definition at line 230 of file vfer_btree_delay.c.
void Tree_Insert | ( | tree_t * | tree, | |
int32_t | val, | |||
struct timeval | stamp | |||
) |
Inserts a new delay value into the tree. Prunes any values that are outside of the delay history while doing so. Updates the last_val added to tree to the inserted value and timestamp.
tree | binary delay tree structure pointer | |
val | delay value to insert | |
stamp | timestamp of when the delay value was taken |
Definition at line 268 of file vfer_btree_delay.c.
int32_t Tree_Max | ( | tree_t * | tree, | |
struct timeval | stamp | |||
) |
Retrieves the maximum delay from the tree. Returns the last value added to the tree if the tree is empty (all values were expired).
tree | binary delay tree structure pointer | |
stamp | current timestamp with which to possibly prune values in the tree |
Definition at line 413 of file vfer_btree_delay.c.
int32_t Tree_Min | ( | tree_t * | tree, | |
struct timeval | stamp | |||
) |
Retrieves the minimum delay from the tree. Returns the last value added to the tree if the tree is empty (all values were expired).
tree | binary delay tree structure pointer | |
stamp | current timestamp with which to possibly prune values in the tree |
Definition at line 377 of file vfer_btree_delay.c.
void Tree_Print | ( | tree_t * | tree | ) |
Prints the tree by using the print helper function for recursion
tree | binary delay tree structure pointer |
Definition at line 447 of file vfer_btree_delay.c.
void Tree_Set_Window | ( | tree_t * | tree, | |
struct timeval | window | |||
) |
Sets a new delay window to use for the tree
tree | binary delay tree structure pointer | |
window | new delay window |
Definition at line 255 of file vfer_btree_delay.c.