Files @ a32b6945032d
Branch filter:

Location: DistRen/src/common/protocol.h - annotation

binki
add .hgignore
/*
  Copyright 2010 Nathan Phillip Brink

  This file is a part of DistRen.

  DistRen is free software: you can redistribute it and/or modify
  it under the terms of the GNU Affero General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  DistRen is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU Affero General Public License for more details.

  You should have received a copy of the GNU Affero General Public License
  along with DistRen.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef DISTREN_PROTOCOL_H
#define DISTREN_PROTOCOL_H

#include <stdint.h>

/**
   Server types:
 */
#define DISTREN_SERVERTYPE_SUBMIT (0x1)
#define DISTREN_SERVERTYPE_DISTRIBUTE (0x2)
#define DISTREN_SERVERTYPE_RENDER (0x4)

/**
   This file defines the constants and structs that the client uses to talk to the server and that the servers use to talk to eachother.
 */

/**
   generic, shared requests
 */
enum distren_request_type
  {
    DISTREN_REQUEST_VERSION = 1, /*< identifies the version of software being
				   used by the sender and tells if it is a client or server */
    DISTREN_REQUEST_PING = 2,
    DISTREN_REQUEST_PONG = 3,
    DISTREN_REQUEST_DISCONNECT = 4,

    /**
       client->server only requests
    */
    DISTREN_REQUEST_SUBMIT = 5,

    /**
       anything->server requests
     */
    DISTREN_REQUEST_JOBINFO = 6, /*< retrieves information about a job based on its number */

    /**
       server->anything
     */
    DISTREN_REQUEST_JOBINFO_RESPONSE = 7, /*< returns information about a job */

    /**
       server->server
    */
    DISTREN_REQUEST_RENDERFRAME = 8,
    DISTREN_REQUEST_DONEFRAME = 9, /* server should check to make sure the
slave is repoting on a frame it's actually assigned to */
    DISTREN_REQUEST_PROGRESS = 10, /*< tells another server of the progress of the first server's work at rendering */
    DISTREN_REQUEST_GETWORK = 11,
    DISTREN_REQUEST_GETVERSION = 12, /* returns version of software that slave
should be running */
    DISTREN_REQUEST_GETRENDERPOWER = 13, /* returns the render power of a
slave */
    DISTREN_REQUEST_SETRENDERPOWER = 14, /* sets renderpower in server
database */
    DISTREN_REQUEST_RESETFRAME = 15, /* sets a frame back to unassigned,
happens if the slave quits for some reason. server code should only allow
resetting of a frame assigned to the slave calling the request (see php
code)*/ 

  };

struct distren_request
{
  uint32_t magic;
  uint32_t len;
  uint8_t enumsize;
  enum distren_request_type type;
};

/**
   initializes request
 */
int distren_request_new(struct distren_request **req, uint32_t len, enum distren_request_type type);

/**
   frees request
 */
int distren_request_free(struct distren_request *req);

#endif