コード例 #1
0
ファイル: brd.c プロジェクト: gitter-badger/picocoin
static void init_nci(struct net_child_info *nci)
{
	memset(nci, 0, sizeof(*nci));
	nci->read_fd = -1;
	nci->write_fd = -1;
	init_peers(nci);
	nci->conns = parr_new(NC_MAX_CONN, NULL);
	nci->eb = event_base_new();
}
コード例 #2
0
ファイル: sudoku.c プロジェクト: jake-freeman/experiments
static puzzle_t *create_puzzle(unsigned char vals[9][9]) {
  puzzle_t *puz = malloc(sizeof(puzzle_t));
  int x, y;
  for (x = 0; x < NUM_DIGITS; x++) {
    for (y = 0; y < NUM_DIGITS; y++) {
      set_init_vals(puz, x, y, vals[x][y]);
      init_peers(puz, x, y);
    }
  }
  return puz;
}
コード例 #3
0
ファイル: sudoku.c プロジェクト: jake-freeman/experiments
static puzzle_t *copy_puzzle(puzzle_t *puz) {
  puzzle_t *new_puz = malloc(sizeof(puzzle_t));
  new_puz = memcpy(new_puz, puz, sizeof(puzzle_t));
  // then re-initialize peers
  int x,y;
  for (x=0; x < NUM_COLS; x++) {
    for (y = 0; y < NUM_ROWS; y++) {
      init_peers(new_puz, x, y);
    }
  }
  return new_puz;
}
コード例 #4
0
ファイル: algopr_network.c プロジェクト: OznOg/OpenExanodes
/**
 * init_plugin initialise internal data
 *
 * if we are server, try to bind and launch a thread to accept
 * launch the thread of receive data
 *
 * @param net_plugin  Info on the new instance that we will fill
 *
 * @return EXA_SUCCESS or error
 */
int algopr_init_plugin(exa_nodeid_t node_id, int max_buffer_size)
{
    struct sockaddr_in serv_addr;
    int retval = -NBD_ERR_MALLOC_FAILED;
    int i;

    EXA_ASSERT(EXA_NODEID_VALID(node_id));
    this_node_id = node_id;

    init_peers();

    eth.max_buffer_size = max_buffer_size + max_buffer_size;

    wq_init(&eth.wq_send);

    nbd_init_root(MAX_BIG_RECV_ELT, eth.max_buffer_size, &eth.root_list_big_recv);

    nbd_init_root(MAX_SEND_ELT, sizeof(payload_t), &eth.root_list_send);
    for (i = 0; i < EXA_MAX_NODES_NUMBER; i++)
        nbd_init_list(&eth.root_list_send, &eth.send_list[i]);

    algopr_run = true;

    if (!exathread_create_named(&eth.receive_thread,
		                NBD_THREAD_STACK_SIZE +
				MIN_THREAD_STACK_SIZE_OF_THIS_PLUGIN,
				algopr_receive_thread, NULL, "AlgoPrRcv"))
	return -NBD_ERR_THREAD_CREATION;

    if (!exathread_create_named(&eth.send_thread,
		                NBD_THREAD_STACK_SIZE +
				MIN_THREAD_STACK_SIZE_OF_THIS_PLUGIN,
				algopr_send_thread, NULL, "AlgoPrSnd"))
        return -NBD_ERR_THREAD_CREATION;

    eth.accept_sock = os_socket(PF_INET, SOCK_STREAM, 0);
    if (eth.accept_sock < 0)
        return -EXA_ERR_CREATE_SOCKET;

    /* bind a socket to SERVERD_DATA_PORT port and make it listen for incoming
     * connections */
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    serv_addr.sin_port = htons(algopr_network_port);

    retval = internal_setsock_opt(eth.accept_sock, SOCK_LISTEN_FLAGS);
    if (retval != EXA_SUCCESS)
        return retval;

    if (os_bind(eth.accept_sock, (struct sockaddr *) &serv_addr,
                sizeof(serv_addr)) < 0)
        return -EXA_ERR_CREATE_SOCKET;

    if (os_listen(eth.accept_sock, EXA_MAX_NODES_NUMBER) < 0)
        return -EXA_ERR_CREATE_SOCKET;

    if (!exathread_create_named(&eth.accept_thread,
		                NBD_THREAD_STACK_SIZE +
				MIN_THREAD_STACK_SIZE_OF_THIS_PLUGIN,
				accept_thread, NULL, "servEthAccPlugin"))
        return -NBD_ERR_THREAD_CREATION;

    return EXA_SUCCESS;
}