Transforms and Pdus are working already, Gops start to work.
svn path=/trunk/; revision=14376
This commit is contained in:
parent
e3d0bbc874
commit
bf1117c4c9
|
@ -308,7 +308,7 @@ struct _mate_gop {
|
|||
guint32 id;
|
||||
mate_cfg_gop* cfg;
|
||||
|
||||
guint8* gop_key;
|
||||
gchar* gop_key;
|
||||
AVPL* avpl; /* the attributes of the pdu/gop/gog */
|
||||
guint last_n;
|
||||
|
||||
|
|
|
@ -49,8 +49,6 @@ G_MODULE_EXPORT const gchar version[] = VERSION;
|
|||
|
||||
G_MODULE_EXPORT void plugin_register(void) {
|
||||
|
||||
g_message("---");
|
||||
|
||||
if (! initialized ) {
|
||||
proto_register_mate();
|
||||
initialized = 1;
|
||||
|
|
|
@ -50,7 +50,7 @@ typedef struct _gogkey {
|
|||
static mate_runtime_data* rd = NULL;
|
||||
static mate_config* mc = NULL;
|
||||
|
||||
static int zero = 0;
|
||||
static int zero = 5;
|
||||
|
||||
static int* dbg = &zero;
|
||||
static int* dbg_pdu = &zero;
|
||||
|
@ -155,6 +155,7 @@ extern void initialize_mate_runtime(void) {
|
|||
rd->frames = g_hash_table_new(g_direct_hash,g_direct_equal);
|
||||
|
||||
|
||||
mc->dbg_gop_lvl = 5;
|
||||
dbg_pdu = &(mc->dbg_pdu_lvl);
|
||||
dbg_gop = &(mc->dbg_gop_lvl);
|
||||
dbg_gog = &(mc->dbg_gog_lvl);
|
||||
|
@ -171,8 +172,8 @@ static mate_gop* new_gop(mate_cfg_gop* cfg, mate_pdu* pdu, gchar* key) {
|
|||
gop->id = ++(cfg->last_id);
|
||||
gop->cfg = cfg;
|
||||
|
||||
dbg_print (dbg_gop,1,dbg_facility,"new_gop: %s: ``%s:%d''",gop->cfg->name,gop->id,key);
|
||||
|
||||
dbg_print(dbg_gop, 1, dbg_facility, "new_gop: %s: ``%s:%d''", key, gop->cfg->name, gop->id);
|
||||
|
||||
gop->gop_key = key;
|
||||
gop->avpl = new_avpl(cfg->name);
|
||||
gop->last_n = 0;
|
||||
|
@ -180,26 +181,28 @@ static mate_gop* new_gop(mate_cfg_gop* cfg, mate_pdu* pdu, gchar* key) {
|
|||
gop->gog = NULL;
|
||||
gop->next = NULL;
|
||||
|
||||
gop->expiration = 0.0;
|
||||
gop->idle_expiration = 0.0;
|
||||
gop->expiration = cfg->expiration > 0.0 ? cfg->expiration + rd->now : (float) -1.0 ;
|
||||
gop->idle_expiration = cfg->idle_timeout > 0.0 ? cfg->idle_timeout + rd->now : (float) -1.0 ;
|
||||
gop->time_to_die = cfg->lifetime > 0.0 ? cfg->lifetime + rd->now : (float) -1.0 ;
|
||||
gop->time_to_timeout = 0.0;
|
||||
|
||||
gop->last_time = gop->start_time = rd->now;
|
||||
gop->release_time = 0.0;
|
||||
|
||||
gop->num_of_pdus = 1;
|
||||
gop->num_of_pdus = 0;
|
||||
gop->num_of_after_release_pdus = 0;
|
||||
|
||||
gop->pdus = pdu;
|
||||
gop->last_pdu = pdu;
|
||||
|
||||
gop->released = FALSE;
|
||||
|
||||
pdu->gop = gop;
|
||||
pdu->next = NULL;
|
||||
pdu->is_start = TRUE;
|
||||
pdu->time_in_gop = 0.0;
|
||||
|
||||
g_hash_table_insert(cfg->gop_index,gop->gop_key,gop);
|
||||
return gop;
|
||||
}
|
||||
|
||||
|
@ -484,7 +487,7 @@ static void analize_pdu(mate_pdu* pdu) {
|
|||
|
||||
if ((gopkey_match = new_avpl_exact_match("gop_key_match",pdu->avpl,cfg->key, TRUE))) {
|
||||
gop_key = avpl_to_str(gopkey_match);
|
||||
|
||||
|
||||
g_hash_table_lookup_extended(cfg->gop_index,(gconstpointer)gop_key,(gpointer*)&orig_gop_key,(gpointer*)&gop);
|
||||
|
||||
if ( gop ) {
|
||||
|
@ -494,6 +497,7 @@ static void analize_pdu(mate_pdu* pdu) {
|
|||
if ( ! gop->released &&
|
||||
( ( gop->cfg->lifetime > 0.0 && gop->time_to_die >= rd->now) ||
|
||||
( gop->cfg->idle_timeout > 0.0 && gop->time_to_timeout >= rd->now) ) ) {
|
||||
dbg_print (dbg_gop,4,dbg_facility,"analize_pdu: expiring released gop");
|
||||
gop->released = TRUE;
|
||||
|
||||
if (gop->gog && gop->cfg->start) gop->gog->num_of_released_gops++;
|
||||
|
@ -576,18 +580,27 @@ static void analize_pdu(mate_pdu* pdu) {
|
|||
return;
|
||||
}
|
||||
|
||||
} else {
|
||||
dbg_print (dbg_gop,6,dbg_facility,"analize_pdu: an unassigned pdu");
|
||||
} else {
|
||||
candidate_start = cfg->start;
|
||||
|
||||
pdu->gop = NULL;
|
||||
pdu->next = NULL;
|
||||
if (( is_start = new_avpl_exact_match("",pdu->avpl, candidate_start, FALSE) )) {
|
||||
delete_avpl(is_start,FALSE);
|
||||
gop = new_gop(cfg,pdu,gop_key);
|
||||
} else {
|
||||
g_free(gop_key);
|
||||
return;
|
||||
}
|
||||
|
||||
g_free(gop_key);
|
||||
delete_avpl(gopkey_match,TRUE);
|
||||
return;
|
||||
pdu->gop = gop;
|
||||
}
|
||||
}
|
||||
|
||||
if (gop->last_pdu) gop->last_pdu->next = pdu;
|
||||
gop->last_pdu = pdu;
|
||||
pdu->next = NULL;
|
||||
|
||||
pdu->time_in_gop = rd->now - gop->start_time;
|
||||
|
||||
gop->num_of_pdus++;
|
||||
gop->time_to_timeout = cfg->idle_timeout > 0.0 ? cfg->idle_timeout + rd->now : (float) -1.0 ;
|
||||
|
||||
|
|
|
@ -216,135 +216,6 @@ extern gchar* add_ranges(gchar* range,GPtrArray* range_ptr_arr) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
#define true_false_str(v) ((v) ? "TRUE" : "FALSE")
|
||||
|
||||
|
||||
static void print_gog_config(gpointer k _U_, gpointer v, gpointer p _U_) {
|
||||
mate_cfg_gop* cfg = (mate_cfg_gop*) v;
|
||||
guint8* avplstr = NULL;
|
||||
void* cookie = NULL;
|
||||
AVPL* avpl;
|
||||
|
||||
dbg_print (dbg_cfg,0,dbg_facility,"Action=GogDef; Name=%s; Expiration=%f;",cfg->name,cfg->expiration);
|
||||
|
||||
if (cfg->keys) {
|
||||
while (( avpl = get_next_avpl(cfg->keys,&cookie) )) {
|
||||
avplstr = avpl_to_str(avpl);
|
||||
dbg_print (dbg_cfg,0,dbg_facility,"Action=GogKey; For=%s; On=%s; %s",cfg->name,avpl->name,avplstr);
|
||||
g_free(avplstr);
|
||||
}
|
||||
}
|
||||
|
||||
if (cfg->extra) {
|
||||
avplstr = avpl_to_str(cfg->extra);
|
||||
dbg_print (dbg_cfg,0,dbg_facility,"Action=GogExtra; For=%s; %s",cfg->name,avplstr);
|
||||
g_free(avplstr);
|
||||
}
|
||||
|
||||
print_xxx_transforms(cfg);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void print_gop_config(gpointer k _U_ , gpointer v, gpointer p _U_) {
|
||||
mate_cfg_gop* cfg = (mate_cfg_gop*) v;
|
||||
guint8* avplstr = NULL;
|
||||
guint8* show_pdu_tree;
|
||||
GString* gopdef;
|
||||
|
||||
gopdef = g_string_new("Action=GopDef; ");
|
||||
|
||||
show_pdu_tree = cfg->show_pdu_tree ? "TRUE" : "FALSE";
|
||||
g_string_sprintfa(gopdef,"Name=%s; ShowPduTree=%s; ShowGopTimes=%s; "
|
||||
"GopExpiration=%f; GopIdleTimeout=%f GopLifetime=%f;",
|
||||
cfg->name,show_pdu_tree,true_false_str(cfg->show_times),
|
||||
cfg->expiration,cfg->idle_timeout,cfg->lifetime);
|
||||
|
||||
if (cfg->key) {
|
||||
avplstr = avpl_to_str(cfg->key);
|
||||
g_string_sprintfa(gopdef," %s",avplstr);
|
||||
g_free(avplstr);
|
||||
}
|
||||
|
||||
dbg_print (dbg_cfg,0,dbg_facility,"%s",gopdef->str);
|
||||
|
||||
|
||||
if (cfg->start) {
|
||||
avplstr = avpl_to_str(cfg->start);
|
||||
dbg_print (dbg_cfg,0,dbg_facility,"Action=GopStart; For=%s; %s",cfg->name,avplstr);
|
||||
g_free(avplstr);
|
||||
}
|
||||
|
||||
if (cfg->stop) {
|
||||
avplstr = avpl_to_str(cfg->stop);
|
||||
dbg_print (dbg_cfg,0,dbg_facility,"Action=GopStop; For=%s; %s",cfg->name,avplstr);
|
||||
g_free(avplstr);
|
||||
}
|
||||
|
||||
if (cfg->extra) {
|
||||
avplstr = avpl_to_str(cfg->extra);
|
||||
dbg_print (dbg_cfg,0,dbg_facility,"Action=GopExtra; For=%s; %s",cfg->name,avplstr);
|
||||
g_free(avplstr);
|
||||
}
|
||||
|
||||
print_xxx_transforms(cfg);
|
||||
|
||||
g_string_free(gopdef,TRUE);
|
||||
|
||||
}
|
||||
|
||||
|
||||
static void print_gogs_by_gopname(gpointer k, gpointer v, gpointer p _U_) {
|
||||
void* cookie = NULL;
|
||||
guint8* str = NULL;
|
||||
AVPL* avpl;
|
||||
|
||||
while(( avpl = get_next_avpl((LoAL*)v,&cookie) )) {
|
||||
str = avpl_to_str(avpl);
|
||||
dbg_print(dbg_cfg,0,dbg_facility,"Gop=%s; Gog=%s; --> %s",(guint8*)k,avpl->name,str);
|
||||
g_free(str);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void print_gops_by_pduname(gpointer k, gpointer v, gpointer p _U_) {
|
||||
dbg_print(dbg_cfg,0,dbg_facility,
|
||||
"PduName=%s; GopName=%s;", (guint8*)k,((mate_cfg_gop*)v)->name);
|
||||
}
|
||||
|
||||
static void print_config(void) {
|
||||
guint i;
|
||||
|
||||
/* FIXME: print the settings */
|
||||
|
||||
dbg_print(dbg_cfg,0,dbg_facility,"###########################"
|
||||
" CURRENT CONFIGURATION " "###########################");
|
||||
|
||||
g_hash_table_foreach(matecfg->transfs,print_transforms,NULL);
|
||||
|
||||
for (i=0; i<matecfg->pducfglist->len; i++) {
|
||||
print_pdu_config((mate_cfg_pdu*) g_ptr_array_index(matecfg->pducfglist,i));
|
||||
}
|
||||
|
||||
g_hash_table_foreach(matecfg->gopcfgs,print_gop_config,NULL);
|
||||
g_hash_table_foreach(matecfg->gogcfgs,print_gog_config,NULL);
|
||||
|
||||
dbg_print(dbg_cfg,0,dbg_facility,"###########################"
|
||||
" END OF CURRENT CONFIGURATION " "###########################");
|
||||
|
||||
if (*dbg_cfg > 1) {
|
||||
dbg_print(dbg_cfg,0,dbg_facility,"******* Config Hashes");
|
||||
dbg_print(dbg_cfg,0,dbg_facility,"*** Gops by PduName");
|
||||
g_hash_table_foreach(matecfg->gops_by_pduname,print_gops_by_pduname,NULL);
|
||||
dbg_print(dbg_cfg,0,dbg_facility,"*** GogKeys by GopName");
|
||||
g_hash_table_foreach(matecfg->gogs_by_gopname,print_gogs_by_gopname,NULL);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void new_attr_hfri(gchar* item_name, GHashTable* hfids, gchar* name) {
|
||||
int* p_id = g_malloc(sizeof(int));
|
||||
|
||||
|
@ -548,6 +419,7 @@ static void analyze_gop_config(gpointer k _U_, gpointer v, gpointer p _U_) {
|
|||
ett = &cfg->ett_children;
|
||||
g_array_append_val(matecfg->ett,ett);
|
||||
|
||||
g_hash_table_insert(matecfg->gops_by_pduname,cfg->name,cfg);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1022,7 +894,7 @@ extern mate_config* mate_make_config(gchar* filename, int mate_hfid) {
|
|||
g_hash_table_foreach(matecfg->gopcfgs,(GHFunc)print_gop_config,config_text);
|
||||
g_hash_table_foreach(matecfg->gogcfgs,(GHFunc)print_gog_config,config_text);
|
||||
|
||||
g_message("Current configuration\n%s\nDone;\n",config_text->str);
|
||||
g_message("Current configuration:\n%s\nDone;\n",config_text->str);
|
||||
/* } */
|
||||
|
||||
analyze_config();
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
* fmt, ...: what to print
|
||||
*/
|
||||
|
||||
void dbg_print(const gint* which, gint how, FILE* where, gchar* fmt, ... ) {
|
||||
void dbg_print(const gint* which, gint how, FILE* where, const gchar* fmt, ... ) {
|
||||
static gchar debug_buffer[DEBUG_BUFFER_SIZE];
|
||||
va_list list;
|
||||
|
||||
|
@ -63,7 +63,7 @@ void dbg_print(const gint* which, gint how, FILE* where, gchar* fmt, ... ) {
|
|||
/***************************************************************************
|
||||
* single copy strings
|
||||
***************************************************************************
|
||||
* In order to save memory and since strings repeat more often than don't,
|
||||
* Strings repeat more often than don't. In order to save memory
|
||||
* we'll keep only one copy of each as key to a hash with a count of
|
||||
* subscribers as value.
|
||||
***************************************************************************/
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
|
||||
/******* dbg_print *********/
|
||||
#define DEBUG_BUFFER_SIZE 4096
|
||||
extern void dbg_print(const gint* which, gint how, FILE* where, gchar* fmt, ... );
|
||||
extern void dbg_print(const gint* which, gint how, FILE* where, const gchar* fmt, ... );
|
||||
|
||||
|
||||
/******* single copy strings *********/
|
||||
|
|
Loading…
Reference in New Issue