Esempio n. 1
0
int um_backing_msg_init(um_backing_msg_t* bmsg) {
  entry_list_init(&bmsg->elist);
  bmsg->elist.entries = bmsg->entries_array;
  bmsg->elist.entries_size = BMSG_ENTRIES_ARRAY_SIZE;
  bmsg->msg = NULL;
  bmsg->inuse = 0;
  return 0;
}
Esempio n. 2
0
static void init(void) {
  app_comm_set_sniff_interval(SNIFF_INTERVAL_REDUCED);
  app_message_register_inbox_received(in_received_handler);
  app_message_register_inbox_dropped(in_dropped_handler);
  app_message_register_outbox_sent(out_sent_handler);
  app_message_register_outbox_failed(out_failed_handler);
  app_message_open(app_message_inbox_size_maximum(), APP_MESSAGE_OUTBOX_SIZE_MINIMUM);

  dataitems = entry_list_init(dataitems_select_callback);  
  	
  main_menu_init();
  main_menu_show();
}
Esempio n. 3
0
um_status_t um_consume_no_copy(const uint8_t* header, size_t nheader,
                               const uint8_t* body, size_t nbody,
                               uint64_t* reqid_out,
                               mc_msg_t* msg_out) {
  FBI_ASSERT(header && body && reqid_out && msg_out);
  um_message_info_t info;
  um_status_t header_rv = um_parse_header(header, nheader, &info);
  if (header_rv != um_ok) {
    return header_rv;
  }
  if (!(nheader == info.header_size &&
        nbody == info.body_size &&
        nheader + nbody == info.message_size)) {
    return um_invalid_range;
  }

  entry_list_t elist;
  entry_list_init(&elist);
  /* We know that header/body won't be modified here,
     but the interface is messed up */
  ssize_t rv = entry_list_read_from_buf(&elist,
                                        (char*)header, nheader,
                                        (char*)body, nbody,
                                        /*free_buf_when_done=*/0);
  if (rv < 0 || rv != info.message_size) {
    return um_message_parse_error;
  }

  _parse_info_t parse_info;
  if (_fill_base_msg(&elist, msg_out, &parse_info) != 0) {
    return um_message_parse_error;
  }

  /* TODO: support stats with no_copy API */
  if (parse_info.stats_count > 0) {
    return um_message_parse_error;
  }

  if (_fill_msg_strs(msg_out, &elist, body, &parse_info) != 0) {
    return um_message_parse_error;
  }

  *reqid_out = parse_info.reqid;

  return um_ok;
}
Esempio n. 4
0
/*
 * Create an ARCHIVE_MATCH object.
 */
struct archive *
archive_match_new(void)
{
	struct archive_match *a;

	a = (struct archive_match *)calloc(1, sizeof(*a));
	if (a == NULL)
		return (NULL);
	a->archive.magic = ARCHIVE_MATCH_MAGIC;
	a->archive.state = ARCHIVE_STATE_NEW;
	match_list_init(&(a->inclusions));
	match_list_init(&(a->exclusions));
	__archive_rb_tree_init(&(a->exclusion_tree), &rb_ops_mbs);
	entry_list_init(&(a->exclusion_entry_list));
	match_list_init(&(a->inclusion_unames));
	match_list_init(&(a->inclusion_gnames));
	time(&a->now);
	return (&(a->archive));
}