⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gld.c

📁 Path MPICH-V for MPICH the MPI Implementation
💻 C
📖 第 1 页 / 共 2 页
字号:
/*  MPICH-V2  Copyright (C) 2002, 2003 Groupe Cluster et Grid, LRI, Universite de Paris Sud  This file is part of MPICH-V2.  MPICH-V2 is free software; you can redistribute it and/or modify  it under the terms of the GNU General Public License as published by  the Free Software Foundation; either version 2 of the License, or  (at your option) any later version.  MPICH-V2 is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License for more details.  You should have received a copy of the GNU General Public License  along with MPICH-V2; if not, write to the Free Software  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  $Id: gld.c,v 1.1.1.1 2004/01/30 15:49:38 lemarini Exp $*/#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <time.h>#include "gld.h"#include "glogd.h"static void gld_new_uid(Gld *gld, name_color *uid, gpointer null){  GtkWidget *uid_dw;  GtkCList *rlist;  printf("new uid : %s\n", uid->name);  gld->uids = g_list_append(gld->uids, uid);  if( gld->select_uids && ( (uid_dw = gtk_object_get_user_data(GTK_OBJECT(gld->select_uids))) ) )    {      rlist = GTK_CLIST( gtk_object_get_user_data( GTK_OBJECT(uid_dw) ) );      gtk_clist_append(rlist, &(uid->name));    }}static void gld_new_lvl(Gld *gld, name_color *lvl, gpointer null){  GtkWidget *lvl_dw;  GtkCList *rlist;  gld->lvls = g_list_append(gld->lvls, lvl);  if( gld->select_lvls && ( (lvl_dw = gtk_object_get_user_data(GTK_OBJECT(gld->select_lvls))) ) )    {      rlist = GTK_CLIST( gtk_object_get_user_data( GTK_OBJECT(lvl_dw) ) );      gtk_clist_append(rlist, &(lvl->name));    }}static void gld_reset(GLogger *_gld){  Gld *gld = GLD(_gld);  gtk_clist_clear( GTK_CLIST(gld->mlist) );}static void gld_data(GLogger *_gld, msg *m){  char *line[10];  char lineno_s[64], mid_s[64], addr[128], edate[96], *p;  struct tm *tp;  Gld *gld = GLD(_gld);  int r;  GtkStyle *st;  if( !g_list_find( gld->uids, m->uid ) )    return;  if( !g_list_find( gld->lvls, m->lvl ) )    return;  line[0] = m->uid->name;  line[1] = m->lvl->name;  line[2] = m->file;  line[3] = m->func;  sprintf(lineno_s, "%d", m->lineno);  line[4] = lineno_s;  sprintf(mid_s, "%d", m->mid);  line[5] = mid_s;  line[6] = m->dta;  tp = localtime( (time_t*)&m->edate.tv_sec );  sprintf(edate, "%s%ld祍", asctime(tp), m->edate.tv_usec);  for(p = edate; *p != '\n'; p++) ;  *p = ' ';  line[7] = edate;  tp = localtime( (time_t*)&m->rdate.tv_sec );  line[8] = asctime( tp );  line[8][strlen(line[8])-1] = 0;  sprintf(addr, "%s:%d", inet_ntoa(m->from.sin_addr), ntohs(m->from.sin_port));  line[9] = addr;  st = gtk_style_copy(GTK_WIDGET(GLOGGER(gld)->logd)->style);  memcpy( &(st->fg[GTK_WIDGET(GLOGGER(gld)->logd)->state]), &m->lvl->color, sizeof(GdkColor));  memcpy( &(st->base[GTK_WIDGET(GLOGGER(gld)->logd)->state]), &m->uid->color, sizeof(GdkColor));  r = gtk_clist_append( GTK_CLIST(gld->mlist), line );  gtk_clist_set_row_style(GTK_CLIST(gld->mlist), r, st);  gtk_clist_set_row_data(GTK_CLIST(gld->mlist), r, m);  gtk_clist_sort(GTK_CLIST(gld->mlist));  gtk_style_unref(st);}static void gld_class_init(GldClass *class){  GLOGGER_CLASS(class)->on_reset = gld_reset;  GLOGGER_CLASS(class)->on_data  = gld_data;}static gboolean gld_delete(GtkWindow *w, GdkEvent *e, gpointer null){  Gld *gld = GLD(gtk_object_get_user_data(GTK_OBJECT(w)));  gtk_object_destroy( GTK_OBJECT(gld) );  return FALSE;}static void gld_destroy(GtkObject *o, gpointer *null){  Gld *gld = GLD(o);  gtk_signal_emit_by_name(o, "remove");  gtk_widget_destroy(gld->window);}static void gld_column_display_toggled(GtkToggleButton *togglebutton, Gld *gld){  int i;  i = (int)gtk_object_get_user_data(GTK_OBJECT(togglebutton));  gtk_clist_set_column_visibility( GTK_CLIST(gld->mlist),				   i,				   gtk_toggle_button_get_active(togglebutton) );}static gboolean gld_uid_dw_delete(GtkObject *o, GdkEvent *e, GtkToggleButton *b){  gtk_object_set_user_data(GTK_OBJECT(b), NULL);  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), FALSE);  return FALSE;}static void gld_uid_dw_in(GtkButton *b, Gld *gld){  GtkCList *llist, *rlist;  GList *l, *l2;  char *elt;  int r;  int redo = 0;  llist = GTK_CLIST(gtk_object_get_user_data(GTK_OBJECT(b)));  rlist = GTK_CLIST(gtk_object_get_user_data(GTK_OBJECT(llist)));  gtk_clist_freeze(llist);   gtk_clist_freeze(rlist);  /* hack : we eat selection as well as we run in it, so we take the head every time */  for(l = g_list_first(llist->selection); l; l = g_list_first(llist->selection))    {      gtk_clist_get_text( llist, (int)l->data, 0, &elt );      r = gtk_clist_append( rlist, &elt );      gtk_clist_remove( llist, (int)l->data );      gtk_clist_get_text( rlist, r, 0, &elt );      for(l2 = g_list_first( GLOGGER(gld)->logd->uids ); l2; l2 = g_list_next(l2) )	if( !strcmp( NC(l2)->name, elt ) )	  {	    gld->uids = g_list_append(gld->uids, NC(l2));	    redo = 1;	    break;	  }    }  gtk_clist_thaw(llist);  gtk_clist_thaw(rlist);  if(redo)    gld_compute_again(gld);}static void gld_uid_dw_out(GtkButton *b, Gld *gld){  GtkCList *llist, *rlist;  GList *l, *l2;  char *elt;  int r;  int redo = 0;  rlist = GTK_CLIST(gtk_object_get_user_data(GTK_OBJECT(b)));  llist = GTK_CLIST(gtk_object_get_user_data(GTK_OBJECT(rlist)));  gtk_clist_freeze(rlist);   gtk_clist_freeze(llist);  /* hack : we eat selection as well as we run in it, so we take the head every time */  for(l = g_list_first(rlist->selection); l; l =  g_list_first(rlist->selection))    {      gtk_clist_get_text( rlist, (int)l->data, 0, &elt );      r = gtk_clist_append( llist, &elt );      gtk_clist_remove( rlist, (int)l->data );      gtk_clist_get_text( llist, r, 0, &elt);      for(l2 = g_list_first( GLOGGER(gld)->logd->uids ); l2; l2 = g_list_next(l2) )	if( !strcmp( NC(l2)->name, elt ) )	  {	    gld->uids = g_list_remove(gld->uids, NC(l2));	    redo = 1;	    break;	  }    }  gtk_clist_thaw(rlist);   gtk_clist_thaw(llist);    if(redo)    gld_compute_again(gld);}static void gld_select_uids(GtkToggleButton *b, Gld *gld){  GtkWidget *uid_dw;  GtkWidget *hbox, *vbbox, *llist, *rlist, *lrarrow, *rlarrow, *lb, *rb;  char *title_in[1]  = { "UID to display" };  char *title_out[1] = { "UID not to display" };  GList *l;  char *elt[1];  uid_dw = gtk_object_get_user_data(GTK_OBJECT(b));  if( gtk_toggle_button_get_active(b) )    {      if( !uid_dw )	{	  uid_dw = gtk_dialog_new();	  gtk_window_set_title(GTK_WINDOW(uid_dw), "Select UIDs");	  gtk_widget_show(uid_dw);	  	  hbox = gtk_hbox_new(FALSE, 0);	  gtk_container_add (GTK_CONTAINER (GTK_DIALOG(uid_dw)->vbox),			     hbox);	  gtk_widget_show(hbox);	  llist = gtk_clist_new_with_titles(1, title_out);	  gtk_box_pack_start(GTK_BOX(hbox), llist, TRUE, TRUE, 0);	  gtk_clist_set_selection_mode (GTK_CLIST(llist), GTK_SELECTION_MULTIPLE);	  gtk_widget_show(llist);	  	  vbbox = gtk_vbutton_box_new();	  gtk_box_pack_start(GTK_BOX(hbox), vbbox, FALSE, FALSE, 0);	  gtk_vbutton_box_set_layout_default(GTK_BUTTONBOX_SPREAD);	  gtk_widget_show(vbbox);	  lrarrow = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_OUT);	  gtk_widget_show(lrarrow);	  lb = gtk_button_new();	  gtk_container_add(GTK_CONTAINER(lb), lrarrow);	  gtk_box_pack_start(GTK_BOX(vbbox), lb, FALSE, FALSE, 0);	  gtk_widget_show(lb);	  gtk_object_set_user_data(GTK_OBJECT(lb), llist);	  gtk_signal_connect(GTK_OBJECT(lb), "clicked",			     GTK_SIGNAL_FUNC(gld_uid_dw_in), gld);	  rlist = gtk_clist_new_with_titles(1, title_in);	  gtk_box_pack_start(GTK_BOX(hbox), rlist, TRUE, TRUE, 0);	  gtk_clist_set_selection_mode (GTK_CLIST(rlist), GTK_SELECTION_MULTIPLE);	  gtk_widget_show(rlist);	  rlarrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_OUT);	  gtk_widget_show(rlarrow);	  rb = gtk_button_new();	  gtk_container_add(GTK_CONTAINER(rb), rlarrow);	  gtk_box_pack_start(GTK_BOX(vbbox), rb, FALSE, FALSE, 0);	  gtk_widget_show(rb);	  gtk_object_set_user_data(GTK_OBJECT(rb), rlist);	  gtk_signal_connect(GTK_OBJECT(rb), "clicked",			     GTK_SIGNAL_FUNC(gld_uid_dw_out), gld);	  	  gtk_object_set_user_data(GTK_OBJECT(rlist), llist);	  gtk_object_set_user_data(GTK_OBJECT(llist), rlist);	  gtk_clist_freeze(GTK_CLIST(llist));	  gtk_clist_freeze(GTK_CLIST(rlist));	  for(l = g_list_first(GLOGGER(gld)->logd->uids);	      l;	      l = g_list_next(l))	    {	      elt[0] = NC(l)->name;	      if( g_list_find( gld->uids, NC(l) ) )		gtk_clist_append(GTK_CLIST(rlist), elt);	      else		gtk_clist_append(GTK_CLIST(llist), elt);			    }	  gtk_clist_thaw(GTK_CLIST(llist));	  gtk_clist_thaw(GTK_CLIST(rlist));	  	  gtk_object_set_user_data(GTK_OBJECT(uid_dw), rlist);	  gtk_signal_connect( GTK_OBJECT(uid_dw), "delete_event",			      GTK_SIGNAL_FUNC(gld_uid_dw_delete), b );	}    }  else    {      if( uid_dw )	gtk_widget_destroy(uid_dw);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -