/*
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 .
*/
#ifndef DISTREN_PROTOCOL_H
#define DISTREN_PROTOCOL_H
#include
/**
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,
DISTREN_REQUEST_PROGRESS = 10, /*< tells another server of the progress of the first server's work at rendering */
DISTREN_REQUEST_GETWORK = 11,
};
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