render_remote.c
changeset 19 d18606bb6f20
parent 18 86f2e5b7191b
child 23 31307efd7e78
--- 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