remote_pool.h
author Tero Marttila <terom@fixme.fi>
Wed, 27 Aug 2008 21:30:32 +0300
changeset 41 540737bf6bac
parent 26 6d615203d963
permissions -rw-r--r--
sending requests, and partial support for receiving -- incomplete, not tested
9
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#ifndef REMOTE_POOL_H
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#define REMOTE_POOL_H
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
#include "remote_node.h"
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
// maximum number of nodes in a remote pool
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
#define REMOTE_POOL_MAX 8
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
// how many bytes long each line in a pool file may be
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
#define POOL_FILE_LINE_LENGTH 512
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
struct remote_pool {
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
    // the remote_nodes are part of this struct
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
    struct remote_node nodes[REMOTE_POOL_MAX];
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
};
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
/*
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
 * Initialize the given remote_pool
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
 */
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
void remote_pool_init (struct remote_pool *pool_info);
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
/*
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
 * Add a remote_node to the pool, see remote_node_init
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
 */
26
6d615203d963 support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    25
int remote_pool_add (struct remote_pool *pool_info, const char *addr_spec);
9
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
/*
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
 * Adds remote_nodes to the pool based on the contents of the given file
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
 *
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
 * The format for the file is a set of "<hostname>:<portname>" lines, see
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
 * parse_hostport in common.h. Blank lines are skipped, and any comments
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
 * prefixed with a '#' char is ignored. Whitespace inside lines is also
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
 * ignored.
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
 *
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
 * Returns however many nodes were added (possibly zero), or -1 on error
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
 */
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
int remote_pool_load (struct remote_pool *pool_info, const char *filename);
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
/*
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
 * Choose a remote_node from the pool
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
 *
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
 * Attempts to pick the one that's least busy
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
 */
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
struct remote_node *remote_pool_get (struct remote_pool *pool_info);
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
/*
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
 * Get the number of remote render nodes in this pool
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
 */
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
int remote_pool_size (struct remote_pool *pool_info);
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
fb6632e6c1bb two new modules, remote_node and remote_pool
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
#endif /* REMOTE_POOL_H */