flowlist.h File Reference

#include <stdio.h>

Include dependency graph for flowlist.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  flow_event
struct  flow_list

Defines

#define hop_limit   50

Functions

flow_listcreate_new_flow_event (double time, double bw)
void dump_flow_list_to_file (FILE *file, struct flow_list *root)
void flow_list_insert (double time, double bw, struct flow_list **root)
flow_eventget_all_events (struct flow_list *root)
int get_no_events (struct flow_list *root)


Define Documentation

#define hop_limit   50
 

Definition at line 2 of file flowlist.h.


Function Documentation

struct flow_list* create_new_flow_event double  time,
double  bw
 

Definition at line 5 of file flowlist.c.

References flow_list::bw, flow_list::next, and flow_list::time.

Referenced by flow_list_insert().

00005                                                                {  
00006     struct flow_list *new_node;
00007     new_node = (struct flow_list*)malloc(sizeof(struct flow_list));
00008     new_node->time = time;
00009     new_node->bw = bw;
00010     new_node->next = NULL;
00011     return(new_node);
00012 }

void dump_flow_list_to_file FILE *  file,
struct flow_list root
 

Definition at line 52 of file flowlist.c.

References flow_list::bw, flow_list::next, and flow_list::time.

00052                                                                {
00053   struct flow_list *node;
00054   double total_bw = 0;
00055   for(node=root;node!=NULL;node=node->next){
00056     total_bw+=node->bw;
00057     fprintf(file,"%lf %lf %lf\n",node->time,node->bw,total_bw);
00058   }
00059 }

void flow_list_insert double  time,
double  bw,
struct flow_list **  root
 

Definition at line 16 of file flowlist.c.

References flow_list::bw, create_new_flow_event(), flow_list::next, and flow_list::time.

Referenced by CBRTrafficGen(), and CBRTrafficInet().

00016                                                                      {
00017 struct flow_list* node;
00018 struct flow_list *new_node;
00019 
00020   if(*root==NULL){
00021     new_node = create_new_flow_event(time,bw);
00022     *root = new_node;
00023   }
00024   else if((*root)->time > time){
00025     new_node = create_new_flow_event(time,bw);
00026     new_node->next = (*root);
00027     *root = new_node;
00028   }
00029   else if((*root)->time == time){
00030     (*root)->bw+=bw;
00031   }
00032   else{
00033     for(node = (*root); node->next != NULL && node->next->time < time ;node = node->next);    
00034     
00035     if(node->next == NULL){
00036       new_node = create_new_flow_event(time,bw);
00037       node->next = new_node;
00038     }
00039     else if(node->next->time==time){
00040       node->next->bw += bw;
00041     }
00042     else{
00043       new_node = create_new_flow_event(time,bw);
00044       new_node->next=node->next;
00045       node->next = new_node;
00046     }
00047   }
00048 return;
00049 }

Here is the call graph for this function:

struct flow_event* get_all_events struct flow_list root  ) 
 

Definition at line 69 of file flowlist.c.

References flow_list::bw, flow_event::delay, flow_event::deltaCBR, get_no_events(), flow_event::NetCBR, flow_list::next, and flow_list::time.

00069                                                          {
00070   int NoNodes=0;
00071   int i;
00072   struct flow_event *allEvents;
00073   struct flow_list *node;
00074 
00075   NoNodes = get_no_events(root);
00076 
00077   allEvents = (struct flow_event*)malloc(NoNodes*sizeof(struct flow_event));
00078   for(node=root,i=0;node!=NULL;node=node->next,i++){
00079     allEvents[i].delay = node->time;
00080     allEvents[i].deltaCBR = node->bw;
00081     if(i==0)
00082       allEvents[i].NetCBR = node->bw;
00083     else
00084       allEvents[i].NetCBR = allEvents[i-1].NetCBR + node->bw;
00085   }
00086   return(allEvents);
00087 }

Here is the call graph for this function:

int get_no_events struct flow_list root  ) 
 

Definition at line 62 of file flowlist.c.

References flow_list::next.

Referenced by get_all_events().

00062                                          {
00063   int NoNodes;
00064   struct flow_list *node;
00065   for(node=root,NoNodes=0;node!=NULL;node=node->next,NoNodes++);
00066   return(NoNodes);
00067 }


Generated on Tue Mar 6 16:52:47 2007 for ns2 Network Simulator 2.29 by  doxygen 1.4.6