示例#1
0
/* load raw hash table's data into holder */
void
load_data_to_holder (GRawData * raw_data, GHolder * h, GModule module,
                     GSort sort)
{
   char *data;
   int hits, i;
   int size = 0;;
   unsigned long long bw = 0;

   size = raw_data->size;
   h->holder_size = size > MAX_CHOICES ? MAX_CHOICES : size;
   h->idx = 0;
   h->module = module;
   h->sub_items_size = 0;
   h->items = new_gholder_item (h->holder_size);

   for (i = 0; i < h->holder_size; i++) {
      bw = raw_data->items[i].bw;
      data = raw_data->items[i].data;
      hits = raw_data->items[i].hits;

      switch (module) {
       case OS:
       case BROWSERS:
          add_os_browser_node (h, hits, data, bw);
          break;
       case HOSTS:
          add_host_node (h, hits, data, bw, raw_data->items[i].usecs);
          break;
       case STATUS_CODES:
          add_status_code_node (h, hits, data, bw);
          break;
       default:
          h->items[h->idx].bw = bw;
          h->items[h->idx].data = xstrdup (data);
          h->items[h->idx].hits = hits;
          if (conf.serve_usecs)
             h->items[h->idx].usecs = raw_data->items[i].usecs;
          h->idx++;
      }
   }
   sort_holder_items (h->items, h->idx, sort);
   /* HOSTS module does not have "real" sub items, thus we don't include it */
   if (module == OS || module == BROWSERS || module == STATUS_CODES)
      sort_sub_list (h, sort);

   free_raw_data (raw_data);
}
示例#2
0
char *
proxy_resolve_host(const char *host, char *addr, size_t size)
{
    NMP_ASSERT(host && addr && !strlen(addr));

    if (!find_host_node_by_host(hlist_manager, host, addr, size))
    {
        proxy_host_t *node;
        node = (proxy_host_t*)nmp_new0(proxy_host_t, 1);
        node->lock = nmp_mutex_new();
        node->state = HOST_INVALID;
        node->state_timer = MAX_HOST_IN_VALID_TIME;
        node->resolve_times = 0;
        strncpy(node->host, host, sizeof(node->host)-1);

        add_host_node(node);
        return NULL;
    }

    if (strlen(addr))
        return addr;
    else
        return NULL;
}