Ejemplo n.º 1
0
static int route_send(void *req)
{
    int ret = 0;
    struct module *route;
    struct msg_hdr resp;

    route = module_get_by_name("route");
    if (route == NULL) {
        fastpath_log_error("route_send: get route module failed\n");
        return -ENOENT;
    }

    ret = route->message(route, (struct msg_hdr *)req, &resp);

    return ret;
}
Ejemplo n.º 2
0
void on_modules_cell_toggle_callback(GtkCellRenderer * cell,
             gchar * path, gpointer model)
{
  GtkTreeIter iter;
  gboolean *on;
  gchar *name;
  MODULE_ENTRY *entry;
  GList *l;

  gtk_tree_model_get_iter_from_string(model, &iter, path);
  gtk_tree_model_get(model, &iter, COL_ENABLE, &on, COL_NAME, &name,
         -1);
  if (on) {
    entry = module_get_by_name(config->modules, name);
    GtkWidget *menubar;
    GtkWidget *toolbar;
    // reset menu for any existing window
    if (entry->functions) {
      l = config->windows;
      while (l) {
        menubar =
            interface_get_widget(GTK_WIDGET
               (l->data),
               "menubar_main");
        if (menubar)
          if (entry->functions->menu_reset)
            entry->functions->
                menu_reset((gpointer)
                     menubar);

        toolbar =
            interface_get_widget(GTK_WIDGET
               (l->data),
               "toolbar_main");
        if (toolbar)
          if (entry->functions->
              toolbar_reset)
            entry->functions->
                toolbar_reset((gpointer) toolbar);
        l = g_list_next(l);
      }

      // call session_open for all existing sessions
      if (entry->functions->session_close) {
        l = config->sessions;
        while (l) {
          entry->functions->session_close(l->
                  data);
          l = g_list_next(l);
        }
      }
    }
    if (module_unload(entry)) {
      gtk_list_store_set(model, &iter, COL_ENABLE, FALSE,
             -1);
      // change the menu 
    } else {
      char *message;
      message =
          g_strdup_printf
          (" Module \"%s\" can't be unloaded !", name);
      interface_display_message(message);
      g_free(message);
    }
  } else {
    if (module_load
        ((entry =
          module_get_by_name(config->modules, name)))) {
      GtkWidget *menubar;
      GtkWidget *toolbar;
      if (entry->functions) {
        // modify menu for any existing window
        l = config->windows;
        while (l) {
          menubar =
              interface_get_widget(GTK_WIDGET
                 (l->data),
                 "menubar_main");
          if (menubar)
            if (entry->functions->
                menu_modify)
              entry->functions->
                  menu_modify((gpointer) menubar);
          toolbar =
              interface_get_widget(GTK_WIDGET
                 (l->data),
                 "toolbar_main");
          if (toolbar)
            if (entry->functions->
                toolbar_modify)
              entry->functions->
                  toolbar_modify((gpointer) toolbar);
          l = g_list_next(l);
        }
        // call session_open for all existing sessions
        if (entry->functions->session_open) {
          l = config->sessions;
          while (l) {
            entry->functions->
                session_open(l->data);
            l = g_list_next(l);
          }
        }
      }
      gtk_list_store_set(model, &iter, COL_ENABLE, TRUE,
             -1);
    } else {
      char *message;
      message =
          g_strdup_printf
          (" Module \"%s\" can't be loaded !", name);
      interface_display_message(message);
      g_free(message);
    }
  }
  g_free(name);
}