static struct io_plan *init_conn(struct io_conn *conn, struct data *d)
{
	/* Free listener so when conns close we exit io_loop */
	io_close_listener(d->l);

	return io_duplex(conn, read_priority_init(conn, d), write_more(conn, d));
}
Beispiel #2
0
static struct io_plan *init_conn(struct io_conn *conn, struct data *d)
{
	ok1(d->state == 0);
	d->state++;

	io_close_listener(d->l);

	memset(d->wbuf, 7, sizeof(d->wbuf));
	io_set_finish(conn, finish_ok, d);

	return io_duplex(conn,
			 io_read(conn, d->buf, sizeof(d->buf), r_done, d),
			 io_write(conn, d->wbuf, sizeof(d->wbuf), w_done, d));
}
Beispiel #3
0
static struct io_plan *jcon_connected(struct io_conn *conn,
				      struct lightningd_state *dstate)
{
	struct json_connection *jcon;

	jcon = tal(dstate, struct json_connection);
	jcon->dstate = dstate;
	jcon->used = 0;
	jcon->buffer = tal_arr(jcon, char, 64);
	jcon->stop = false;
	jcon->current = NULL;
	jcon->log = new_log(jcon, dstate->log_record, "%sjcon fd %i:",
			    log_prefix(dstate->base_log), io_conn_fd(conn));
	list_head_init(&jcon->output);

	io_set_finish(conn, finish_jcon, jcon);

	return io_duplex(conn,
			 io_read_partial(conn, jcon->buffer,
					 tal_count(jcon->buffer),
					 &jcon->len_read, read_json, jcon),
			 write_json(conn, jcon));
}