--- a/render_remote.c Mon Jun 09 18:58:39 2008 +0300
+++ b/render_remote.c Tue Jun 17 16:39:55 2008 +0300
@@ -192,13 +192,18 @@
/*
* Do the initial IO-agnostic work to initialize the rendering process
*/
-static struct render_remote *_render_remote_init (struct render *render, struct remote_node *remote_node) {
+static struct render_remote *_render_remote_init (struct render *render, struct remote_pool *pool_info) {
struct render_remote *ctx;
+ struct remote_node *node_info;
- printf("remote_node render load: %d/%d\n", remote_node->current_load, remote_node->parallel_renders);
+ // get a node from the pool
+ if (!(node_info = remote_pool_get(pool_info)))
+ ERROR("remote_pool_get");
+
+ printf("remote_node render load: %d/%d\n", node_info->current_load, node_info->parallel_renders);
// alloc the remote render ctx
- if (!(ctx = calloc(1, sizeof(struct render_remote))))
+ if (!(ctx = calloc(1, sizeof(*ctx))))
ERROR("calloc");
// copy the relevant stuff from the render_ctx
@@ -211,7 +216,7 @@
ctx->render_cmd.y2 = render->y2;
// create the socket
- if ((ctx->sock = socket(remote_node->addr.ss_family, SOCK_STREAM, 0)) < 0)
+ if ((ctx->sock = socket(node_info->addr.ss_family, SOCK_STREAM, 0)) < 0)
PERROR("socket");
// mark it as nonblocking
@@ -219,7 +224,7 @@
PERROR("fcntl");
// initiate the connect
- int err = connect(ctx->sock, (struct sockaddr *) &remote_node->addr, sizeof(remote_node->addr));
+ int err = connect(ctx->sock, (struct sockaddr *) &node_info->addr, sizeof(node_info->addr));
if (err != -1 || errno != EINPROGRESS)
PERROR("connect");
@@ -237,7 +242,7 @@
*/
struct render_remote *render_remote_rawio (
struct render *render,
- struct remote_node *remote_node,
+ struct remote_pool *pool_info,
void (*cb_sent)(void *arg),
void (*cb_fail)(void *arg),
void (*cb_io_data)(evutil_socket_t, short, void*),
@@ -246,7 +251,7 @@
struct render_remote *ctx;
// short-circuit error handling
- if (!(ctx = _render_remote_init(render, remote_node)))
+ if (!(ctx = _render_remote_init(render, pool_info)))
return NULL;
// store the provided callback functions
@@ -281,7 +286,7 @@
*/
struct render_remote *render_remote (
struct render *render,
- struct remote_node *remote_node,
+ struct remote_pool *pool_info,
void (*cb_sent)(void *arg),
void (*cb_data)(struct evbuffer *buf, void *arg),
void (*cb_done)(void *arg),
@@ -291,7 +296,7 @@
struct render_remote *ctx;
// short-circuit error handling
- if (!(ctx = _render_remote_init(render, remote_node)))
+ if (!(ctx = _render_remote_init(render, pool_info)))
return NULL;
// store the provided callback functions